y=tg(x); switch(y) { case y>0:{ cout >> "/n номер четверти 2 и 3"; break;} case y<0:{ cout >> "/n номер четверти 1 и 4"; break;} }
помогите ришить задачу на Асамблере... Задача///// найти минимальное число из заданих чисел 110(bin),33,FO(hex),1111(bin),251 нужно чтоб все ето щитала програмка в Асемблере Кто поможет++++++++++++++++++++++++
вот нашел прогу ввода массива и поиска макс и мин элементов. Code: [B][COLOR=DarkOrange]Ввести массив чисел, найти min и max, вывести на экран[/COLOR][/B] .model small .stack 100h .data massiv dw 80 dup(?) msg1 db 0ah,0dh,“Vvodite chisla “,0ah,0dh,“$“ msg2 db 0ah,0dh,“max = $“ msg3 db 0ah,0dh,“min = $“ c10 dw 10 .code start: mov ax,@data mov ds,ax mov ah,09h ; вывод приглашения для ввода чисел lea dx,msg1 int 21h mov di,0 ; в di - max mov si,32767 ; в si - min xor dx,dx ; в dx - очередное число input_loop: mov ah,01h ; ввод символа int 21h cmp al,0dh ; если enter je chislo ; то занести число в массив cmp al,20h ; если пробел je chislo ; то занести число в массив sub al,30h ; вычитаем '0' mov cl,al ; сохраняем цифру в cl mov ax,dx ; в ax - введенное число mul c10 ; умножаем на 10 xor ch,ch add ax,cx ; добавляем цифру из al mov dx,ax ; число снова в dx jmp input_loop chislo: mov bx,cx ; в bx - порядковый номер очередного числа shl bx,1 ; теперь - смещение очередного числа в массиве mov massiv[bx],dx ; записываем в массив число inc cx ; увеличиваем счетчик введенных чисел cmp dx,si ; сравниваем число с минимальным jb minimum ; если оно меньше, то jmp на minimum cmp dx,di ; сравниваем число с максиальным jg maximum ; если оно больше, то jmp на maximum jmp chislo_cont ; иначе jmp на chislo_cont minimum: mov si,dx ; запоминаем минимальное число в si jmp chislo_cont maximum: mov di,dx ; запоминаем максимальное число в di chislo_cont: xor dx,dx ; dx в ноль cmp cx,80 ; если ввели 80-ое число je end_input ; то конец ввода cmp al,0dh ; если был нажат enter je end_input ; то конец ввода jmp input_loop end_input: mov ah,09h ; вывод на экран msg2 lea dx,msg2 int 21h mov ax,di ; передаем в функцию output max через ax call output ; выводим это число lea dx,msg3 ; вывод на экран msg3 mov ah,9 int 21h mov ax,si ; передаем в ouptput min через ax call output ; выводим это число mov ah,4ch ; завершение программы int 21h output proc ; процедура вывода числа, находящегосы в ax xor cx,cx ; счетчик цифр div_loop: xor dx,dx ; подготовка к делению div c10 ; деление add dx,30h ; в dx - ASCII-код остатка от деления push dx ; сохраняем его в стеке inc cx ; инкремент счетчика cmp ax,0 ; деление, покуда частное не нулевое je out_loop jmp div_loop out_loop: ; цикл вывода числа pop dx ; извлекаем из стека очередной остаток mov ah,02h ; и выводим его на экран int 21h loop out_loop ; цикл продолжается cx раз ret output endp end start щя смотрю где то писал функции перевода в разные СЧ... найду - добавлю. Вот нашел функцию перевода с BIN to HEX. имхо тебе будет нужно. -------------------EDIT-------------------------- Code: BinToHex Proc mov cx,4 L3: mov si,ax and si,0fh;здесь я мож втыканул...или же маска and si,1111b mov dl,strHex[si] ; DATA strHex DB '0123456789ABCDEF' dec bx mov [bx], dl shr ax,4 dec cx jnz L3 ret BinToHex ENDP -------------------EDIT--------------------------
Нужна помощь в написании ФТП клиента с радиобатоном для анонимного входа, поддержкой основных ф-й фтп(просмотр директорий, скачка, выкачка и тд.) Я думаю исходников в нете нарыть можно много, я и нарыл но встретился с проблемой. Вопервых желательно код на С++ но можна и делфу. Во вторых большинство клиентов получаются досовскими, а радиобатон тогда нельзя добавить. переделать тоже не получается. Помогите хоть чем-то. Наперёд большое спасиба!!!
можеш посмотреть сорцы нормального фтп сервера (с) by Pablo Software ЗДЕСЬ или же если сильно горит недорого смотри ЗДЕСЬ
У меня на следующую прогу(преобразоване латинских заглавных букв в строчные) masm выдает такую ошибку:fatal error L1101:invalid object module pos:1E Record type:570C. Объясните мне, что это значит. и также хотелось бы узнать как ее исправить. Сама прога: CSEG segment org 100h assume CS:CSEG, DS:CSEG, SS:CSEG, ES:CSEG start: ;очистка экрана MOV AX,0600H ;AH=06H - УСТАНОВКА ПРОКРУТКИ, AL=00 - ВО ВЕСЬ ЭКРАН MOV BH,07 ;ЧЕРНО-БЕЛЫЙ ЭКРАН MOV CX,0000 ;ВЕРХНЯЯ ЛЕВАЯ ПОЗИЦИЯ MOV DX,184FH ;НИЖНЯЯ ПРАВАЯ ПОЗИЦИЯ INT 10H ;УПРАВЛЕНИЕ В BIOS ;УСТАНОВКА КУРСОРА В ПОЗИЦИЮ 00 MOV AH,02 ;ЗАПРОС НА УСТАНОВКУ КУРСОРА MOV BH,00 ;ВЫБОР ВИДЕОСТРАНИЦЫ MOV DX,0000 ;УСТАНОВКА КУРСОРА INT 10H ;УПРАВЛЕНИЕ В BIOS ;ВЫВОД ПРИГЛАШЕНИЯ НА ВВОД MOV AH,09 ;ФУНКЦИЯ ВЫВОДА СТРОКИ MOV DX,OFFSET MSG1 ;АДРЕС СТРОКИ INT 21H ;ПОЛЬЗОВАТЕЛЬСКОЕ ПРЕРЫВАНИЕ ;СЧИТЫВАНИЕ СИМВОЛОВ, ВВЕДЕННЫХ С КЛВИАТУРЫ MOV AH,3FH ;ФУНКЦИЯ ВВОДА MOV BX,00 ;НОМЕР ДЛЯ КЛАВИАТУРЫ MOV CX,254 ;ДОПУСТИМОЕ КОЛИЧЕСТВО ВВЕДЕННЫХ СИМВОЛОВ MOV DX,OFFSET INBUF ;ЗАНЕСЕНИЕ АДРЕСА БУФЕРА В РЕГИСТР DX INT 21H ;ПОЛЬЗОВАТЕЛЬСКОЕ ПРЕРЫВАНИЕ SUB AX,02 ;ИЗОБЩЕГО КОЛИЧЕСТВА СИМВОЛОВ ВЫЧИТАЮТСЯ СИМВОЛЫ "ВВОД" И "КОНЕЦ СТРОКИ" ;ИЗМЕНЕНИЕ ЗАГЛАВНЫХ БУКВ НА СТРОЧНЫЕ MOV SI,OFFSET INBUF ;В РЕГИСТР sI (ИНДЕКС ПРИЕМНИКА) ЗАНОСИМ АДРЕС ПЕРВОГО СИМВОЛА MOV CX,AX ;В РЕГИСТР CX ЗАНОСИМ КОЛИЧЕСТВО СИМВОЛОВ L1: MOV BL,[SI] ;В BL ЗАНОСИМ ПРОСМАТРИВАЕМЫЙ ФАЙЛ CMP BL,64 ;СРАВНИВАЕМ С 64 65=A JBE VYHOD ;ЕСЛИ МЕНЬШЕ ИЛИ РАВНО ЗАКАНЧИВАЕМ ПРОСТМОТР CMP BL,90 ;СРАВНИВАЕМ С 90 90=Z JA STROKI ;ЕСЛИ БОЛЬШЕ ПРОВЕРИМ НА СТРОЧНОСТЬ ADD BL,32 ;ЕСЛИ ЗАГЛАВНАЯ ЛАТИНСКАЯ СДЕЛАЕМ СТРОЧНОЙ MOV [SI],BL ;ВЕРНЕМ НА МЕСТО JMP VYHOD ;КОНЕЦ STROKI: CMP BL,97 ;СРАВНИВАЕМ С 97 97=a JB VYHOD ;ЕСЛИ МЕНЬШЕ ЗАКАНЧИВАЕМ CMP BL,122 ;СРАВНИВАЕМ С 122 122=z JA VYHOD ;ЕСЛИ БОЛЬШЕ ЗАКАНЧИВАЕМ MOV [SI],BL ;ВОЗВРАЩАЕМ НА МЕСТО VYHOD: INC SI ;ПЕРЕХОД НА СЛЕДУЮЩИЙ СИМВОЛ LOOP L1 MOV BL,BYTE PTR '$' MOV [SI],BL ;ЗАТЫКАЕТ СТРОКУ СИМВОЛОМ $ ;ВЫВОД НОВОЙ СТРОКИ MOV AH,09 MOV DX,OFFSET MSG2 INT 21H MOV DX,OFFSET INBUF INT 21H INT 20H ;ЗАВЕРШЕНИЕ ПРОГРАММЫ MSG1 DB "ENTER STRING OF SYMBOLS:$" MSG2 DB "CONVERT STRING:$" INBUF DB 256 DUP (' ')
Или может хотябы обясните как можна полностю досовское окно вывести в обычное окно и там же сразу всё вводить? Тоесть средствами Builder C++ создать с програмы С++(типа досовской) создать програму под винду с радиобатоном и просто тем же что бЫло в досе...
Хм.. Как вариант, пихай техтбокс, и при нажатии постать передавай команду cmd.exe - правда вывод не заберешь ) Ты часом не шелл под винХП сделать захотел? ))
Да я вобще просто ФТП клиент пытаюсь сделать. Обязательное условие РАДИОБАТОН. А норм исходники ФТП клиента нашол токо досовские. Вот и шаманю.... Можна и просто норм исходники в окнах на билдер
Приветствую всех. Суть ситуации такая: пишу на Delphi7 прогу, которая будет обращаться к БД. Необходимо написать SQL запрос, который по введенным полям (Фамилия, Имя, Отчество) ИЛИ по одному введенному полю будет выполнять поиск и выводить полученные данные на отдельную форму. У меня получается примерно следующее: Code: fam:=edit1.Text; imja:=edit2.Text; otch:=edit3.Text; with form2.query1 do begin //начало выполнения запроса close;//Закрыть файл результат выполлнения предыдущего запроса sql.Clear; //очистить поля предыдущего запроса //записываем новый запрос в свойство SQL sql.Add('select Фамилия,Имя,Отчество'); Sql.Add('form "Telef_Kniga.DB"'); SQL.Add('ORDER BY fam,Imja,Otch'); open; //старт выполнения запроса if Query1.RecordCount <> 0 then DataSource1.DataSet:=Query1 // отобразить рез-т выполнения запроса else begin ShowMessage('В БД нет записей, удовлетворяющих критерию запроса.'); DataSource1.DataSet:=Table1; end; end; //конец выполнения запроса Но в результате выполнения вылетает дли-и-и-и-иная ошибка. Признаться честно в чем в чем, а в SQL`е я вообще нема, поэтому буду очень благодарен если будут присутствовать, желательно подробные, комментарии
хз, получится или нет, все же попробуй так: Code: sql.Add('select [B]fam,Imja,Otch[/B]'); Sql.Add('[B]from[/B] Telef_Kniga.DB'); SQL.Add('ORDER BY fam'); и хорошо бы на ошибку посмотреть