← Апрель 2016 → | ||||||
1
|
2
|
3
|
||||
---|---|---|---|---|---|---|
4
|
5
|
6
|
8
|
9
|
10
|
|
12
|
||||||
23
|
24
|
|||||
26
|
27
|
28
|
29
|
За последние 60 дней ни разу не выходила
Сайт рассылки:
http://rusfaq.ru
Открыта:
28-06-2000
РАССЫЛКИ ПОРТАЛА RFPRO.RU
Лучшие эксперты по данной тематике
/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Assembler (Ассемблер)
![]() Консультация # 189134: Уважаемые эксперты! Пожалуйста, ответьте на вопрос: Помогите пожалуйста написать код в ассемблере. ... Консультация # 189135: Здравствуйте! Прошу помощи в следующем вопросе: Помогите написать код программы на языке ассемблер для решения данного уравнения Заранее спасибо!... Консультация # 189136: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Может кто помочь написать комментарий к этой программе Код (Assembler) :: выделить код model sma Консультация # 189137: Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Рассчитать и вывести значение выражение, при заданных пользователем значениях x и a ... Консультация # 189138: Уважаемые эксперты! Пожалуйста, ответьте на вопрос: Вычислить значения в уравнение. Ассемблер TASM. Платформа Windows. ... Консультация # 189139: У важаемые эксперты! Пожалуйста, ответьте на вопрос: Доброго времени суток. Мне нужна ваша помощь! Суть задачи заключается в реализации знакового умножения. Задача: Даны два числа в двоичном виде(a: 10110101b; b: 00110111b). Обнулить в первом числе 3,5,6 разряды и разделить полученное на 8, второе умножить на 2 и логически сложить с пер... Здравствуйте! У меня возникли сложности с таким вопросом:
Дата отправки: 09.04.2016, 10:12 Консультирует Лысков Игорь Витальевич (Старший модератор): Здравствуйте, vitya-titya! Код (Assembler) :: выделить код .model small .data ;числа-константы из формулы C123 dw 123 C4 dw 4 C5 dw 5 C6 dw 6 C3 dw 3 C36 dw 36 C34 dw 34 sRes db 10,13,'Result: $' .stack 100h ;стек .code ;сегмент кода start: mov ax, @data mov ds, ax ;настраиваем сегментный регистр данных mov ax, С123 ;ax=123 sub ax, C4 ;ax=123-4 cwd ;готовимся к делению idiv C5 ;ax = dx:ax/5 = (123-4)/5, остаток в dx отбрасываем mov di, ax ;сохраним в di mov ax, C6 ;ax=6 sub ax, C3 ;ax=6-3 cwd ;готовимся к делению idiv C4 ;ax = dx:ax/4 = (6-3)/4, остаток в dx отбрасываем add di, ax ;di = (123-4)/5 + (6-3)/4 mov ax, C4 ;ax = 4 imul C3 ;dx:ax = 4*3, dx=0 отбрасываем add ax, C36 ;ax = 4*3 + 36 xchg ax, di ;меняем содержимое ax и di cwd ;готовимся к делению idiv di ;ax = ((123-4)/5 + (6-3)/4) / (4*3 + 36), остаток отбрасываем sub ax, C34 ;ax = ax - 34 ;выведем результат из ax push ax ;сохраним число в стеке mov ah, 9 lea dx, sRes int 21h ;выводим сообщение pop ax mov bx, 10 ;система счисления xor cx, cx ;счетчик в стеке test ax, ax ;проверим на знак числа jge div_loop ;>=0 просто выводим neg ax ;ax = -ax push ax ;сохраним mov dl, '-' ;выведем знак минуса mov ah, 2 int 21h pop ax div_loop: ;цикл получения цифр делением на 10 xor dx,dx div bx ;получаем младшую цифру push dx ;запоминаем в стеке inc cx ;считаем test ax,ax ;повторяем пока не ноль в ах jnz div_loop dig_loop: ;цикл вывода цифр в обратном порядке pop dx ;извлекаем цифру add dl,'0' ;переводим в символ mov ah, 2 int 21h ;выводим на экран loop dig_loop xor ax, ax ;ожидаем любую клавишу int 16h mov ax, 4C00h ;выход int 21h end start
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
Дата отправки: 09.04.2016, 10:15 Консультирует Лысков Игорь Витальевич (Старший модератор): Здравствуйте, shenae2009! Код (Assembler) :: выделить код .model small .data ;числа-константы из формулы C24 dw 34 C4 dw 4 C5 dw 5 C6 dw 6 C36 dw 36 C37 dw 37 C8 dw 8 C3 dw 3 C2 dw 2 sRes db 10,13,'Result: $' .stack 100h ;стек .code ;сегмент кода start: mov ax, @data mov ds, ax ;настраиваем сегментный регистр данных mov ax, С24 ;24 mov bx, C4 ;4 xor dx, dx ;готовимся к делению idiv bx ;ax = dx:ax/bx = 24/4, остаток в dx отбрасываем mov di, ax ;сохраним в di mov ax, C5 ;5 imul C6 ;dx:ax = 5*6 add ax, di ;dx:ax = 5*6 + 24/4 adc dx, 0 ;на всякий случай, учтем перенос div C36 ;ax = dx:ax / 36 mov di, ax ;сохраним в di, остаток отбрасываем ;посчитаем вторую половину формулы mov ax, C8 ;8 imul C6 ;dx:ax = 8*6 add ax, C5 ;dx:ax = 8*6 + 5 adc dx, 0 ;учитываем возможный перенос div C3 ;ax = dx:ax / 3 mov si, ax ;сохнаним частное, остаток в dx отбрасываем mov ax, C3 ;3 imul C2 ;dx:ax = 3*2, старшее слово отбрасываем add si, ax ;si = (8*6+5)/3 + 3*2 mov ax, C8 ;8 xor dx, dx ;dx:ax = 8 div C2 ;ax = dx:ax / 2, остаток в dx отбрасываем add ax, C3 ;ax = 8/2 +3 imul C37 ;dx:ax = 37 * (8/2 +3) idiv si ;ax = dx:ax / si = (37 * (8/2 +3)) / ((8*6+5)/3 + 3*2) add ax, di ;в ax окончательный резльтат ;выведем результат mov bx, 10 ;система счисления xor cx, cx ;счетчик в стеке div_loop: xor dx,dx div bx ;получаем младшую цифру push dx ;запоминаем в стеке inc cx ;считаем test ax,ax ;повторяем пока не ноль в ах jnz div_loop mov ah, 9 lea dx, sRes int 21h ;выводим сообщение dig_loop: pop dx ;извлекаем цифру add dl,'0' ;переводим в символ mov ah, 2 int 21h ;выводим на экран loop dig_loop xor ax, ax ;ожидаем любую клавишу int 16h mov ax, 4C00h ;выход int 21h end start
Здравствуйте! Прошу помощи в следующем вопросе:
Дата отправки: 09.04.2016, 10:22 Консультирует Зенченко Константин Николаевич (Модератор): Здравствуйте, vitya-titya! Код (Assembler) :: выделить код model small data dbRes db 10,13,'Result:$' a dw 2 b dw 3 c dw 4 d dw 5 e dw 6 f dw 8 g dw 12 h dw 14 i dw 25 j dw 36 k dw 37 l dw 250 stack 100h code org 100h start: mov ax,@data mov ds,ax; mov ah,9 lea dx,dbRes; int 21h mov di,a;2 add di,b;2+3 shr di,1;(2+3)/2 mov si,j;36 sub si,c;36-4 mov ax,c;4 xor dx,dx mul e;4*6 mov bx,ax mov ax,i;25 xor dx,dx mul d;25*5 add ax,bx;(4*6+25*5) div si;(4*6+25*5)/(36-4) add di,si;(2+3)/2+(4*6+25*5)/(36-4) mov ax,l;250 shl ax,2;250*2 sub ax,h;250-14 div k;(250-14)/37 xchg di,ax; div di mov di,ax;((2+3)/2+(4*6+25*5)/(36-4))/((250-14)/37) mov ax,g;12 sub ax,c;12-4 mov si,k;37 sub si,f;37-8 mul si;(12-4)*(37-8) add ax,di xor cx,cx mov di,10 @@01: xor dx,dx; div di push dx; inc cx; or ax,ax; jnz @@01 @@02: pop ax; add al,'0'; int 29h loop @@02 mov ah,4Ch; int 21h end start ps:вопросы задавайте в мини-форуме. Удачи!
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Код (Assembler) :: выделить код model small code szRow equ 6 szCol equ szRow start: mov ax,@data mov ds,ax mov ch,szRow+1 xor dx,dx xor bx,bx lRow: mov cl,szCol+1 xor di,di lCol: cmp cl,ch jle next mov al,mass[bx][di] test al,80h jnz next cbw add dx,ax next: inc di dec cl jnz lCol add bx,szCol dec ch jnz lRow mov sum,dx mov ah,4ch mov ah,1 int 21h data sum dw ? mass label byte dat = 0 rept szRow rept szCol db dat dat = (dat+szRow*szCol)mod 256 endm endm stack 256 end start
Дата отправки: 09.04.2016, 10:24 Консультирует Лысков Игорь Витальевич (Старший модератор): Здравствуйте, Dron! Код (Assembler) :: выделить код model small ;модель памяти .code ;сегмент кода szRow equ 6 ;число строк матрицы szCol equ szRow ;колонок столько же, матрица квадратная start: mov ax, @data ;адрес сегмента данных в памяти mov ds, ax ;инициируем регистр сегмента данных ;далее идет подсчет суммы положительных элементов матрицы, ;расположенных ниже главной диагонали mov ch, szRow ;число строк xor dx, dx ;здесь будем накапливать сумму xor bx, bx ;база очередной строки матрицы lRow: mov cl, szCol ;цикл по строкам, число колонок в строке xor di, di ;индекс колонки в строке lCol: cmp cl, ch ;элементы на главной диагонали и выше jle next ; пропускаем mov al, mass[bx][di];берем элемент bx строки di столбца test al, 80h ;отрицательное число? jnz next ;рассматриваем только положительные числа cbw ;байт превращаем в слово add dx, ax ;складываем next: inc di ;на следующий элемент в строке dec cl ;уменьшаем счетчик колонок jnz lCol ;на следующую колонку строки add bx, szCol ;строка закончилась, смещаем базу строки на длину строки dec ch ;уменьшаем счетчик строк jnz lRow ;на следующую строку mov sum, dx ;строки кончились, сохраняем результат mov ah, 4ch ;ф-я завершения программы mov al, 1 ;код возврата int 21h .data ;сегмент данных sum dw ? ;здесь будет сумма mass label byte ;матрица szRow на szCol элементов ;далее задается содержимое матрица при помощи макро dat = 0 ;начальное значение данных rept szRow ;внешний цикл, повтор szRow раз rept szCol ;внутренний цикл, повтор szCol раз db dat ;байт, равный переменной dat dat = (dat+szRow*szCol)mod 256 ;следующее значение равно ;остатку от деления на 256 от суммы ;предыдущего значения и szRow*szCol=36 ;т.о., в матрице будут числа ;0, 36, 72, 108, 144, 180, 216, 252, 32, 72 и т.д. ;числа рассматриваются, как знаковые. ;т.е., если 0 <= число < 128, то положительное ;если 128 <= число < 256, то отрицательное, в доп коде endm ;конец внутреннего цикла endm ;конец внешнего цикла .stack 256 ;стек 100h байт end start ;точка входа в программу
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
Дата отправки: 09.04.2016, 10:30 Консультирует Лысков Игорь Витальевич (Старший модератор): Здравствуйте, ya.fynjygh2013! Код (Assembler) :: выделить код .model small .data sEnterA db "Enter a = $" ;приглашение ввести а sEnterX db "Enter x = $" ;приглашение ввести х sY db "y = $" ;вывод y ;числа-константы из формулы c10 dw 10 ; 10 - кроме того, основание системы счисления c17 dw 17 c4 dw 4 c5 dw 5 c8 dw 8 c3 dw 3 c14 dw 14 c16 dw 16 c6 dw 6 ;буфер для ввода строки-вещественного числа max db 64 ;размер буфера len db ? ;реальная длина String db 64 dup (?) ;сама строка sTemp db 64 dup(?) ;временный буфер для формирования строки-числа dig dw ? ;цифра при обмене с сопроцессором a dd ? ;числа, которые вводятся x dd ? .code ;сегмент кода .386 ;необходимо для команды fsin .startup ;инициализация сегментов для выбранной модели памяти lea dx, sEnterA call InputFloat ;вводим а fstp a ;сохраним из стека сопроцессора в переменной а lea dx, sEnterX call InputFloat ;вводим х fstp x lea dx, sY ;выведем строку "y = " mov ah, 9 int 21h call CalcY ;считаем y по формуле, результат в стеке сопроцессора call float2str ;преобразуем вещ число в стеке сопроцессора в строку lea dx, String ;и выведем mov ah, 9 int 21h mov ah, 0 ;ждем нажатие на клавишу int 16h .exit 0 CalcY proc ;расчет по формуле fild C17 ;17 fimul C4 ;17*4 fld a ;a fimul C5 ;a*5 fild C8 ;8 fidiv C3 ;8/3 fsubp ;a*5 - 8/3 fld x ;x fsin ;sin(x) fimul C14 ;14*sin(x) fiadd C5 ;14*sin(x)+5 fidiv C4 ;(14*sin(x)+5)/4 fild C16 ;16 fimul C6 ;16*6 fiadd C5 ;16*6 + 5 fidiv C10 ;(16*6 + 5)/10 faddp ;(14*sin(x)+5)/4 + (16*6 + 5)/10 fdivp ;(a*5 - 8/3) / ((14*sin(x)+5)/4 + (16*6 + 5)/10) faddp ;17*4 + (a*5 - 8/3) / ((14*sin(x)+5)/4 + (16*6 + 5)/10) ret CalcY endp InputFloat proc ;ввод вещественного числа push dx ;сохраним адрес приглашения для повторного ввода mov ah, 9 ;выведем строку приглашения int 21h lea dx, max ;вводим строку mov ah, 0ah int 21h lea si, String ;адрес строки call str2float ;преобразовываем во float с проверкой синтаксиса pushf ;флаг С говорит о корректности строки, сохраним флажки mov ah, 2 mov dl, 0dh ;перевод на новую строку int 21h mov dl, 0ah int 21h popf ;восстановим флажки pop dx ;восстановим (уберем из стека) адрес приглашения jc InputFloat ;ошибка - на повтор ввода! ret ;введенное число в стеке сопроцессора InputFloat endp ;Преобразование строки в вещественное число в st сопроцессора str2float proc ;преобразование строки в вещественное число fldz ;подготовим st=0 xor dx, dx ;число знаков после точки = 0 xor bx, bx ;bl = 0/1 знак числа +/-, bh = 1/0 знак уже введен/не задан xor di, di ;число введенных цифр, для контроля позиции знака s2fNext: lodsb ;очередной символ cmp al, 0dh ;дошли до конца? je s2fSign ;учтем знак cmp al, '+' ;плюс? jne s2f_minus cmp bh, 0 ;знак уже был введен? jne s2f_err ;можно только раз test di, di jne s2f_err ;знак можно писать только в первой позиции mov bh, 1 ;знак задан jmp s2fNext s2f_minus: cmp al, '-' ;минус? jne s2f_point cmp bh, 0 ;знак уже был введен? jne s2f_err ;можно только раз test di, di jne s2f_err ;знак можно писать только в первой позиции mov bx, 0101h ;задаем знак - минус jmp s2fNext s2f_point: cmp al, '.' ;точка jne s2f_digit test dx, dx ;точку можно задать только один раз jne s2f_err jmp s2fInc s2f_digit: ;проверка на цифры cmp al, '0' jb s2f_err cmp al, '9' ja s2f_err inc di ;есть цифра and ax, 0fh ;готовим разряд mov dig, ax ; для загрузки в сопроцессор test dx, dx ;если целая часть, то je s2fMul10 ; на умножение на 10 mov cx, dx ;иначе делим dx раз на 10 fild dig ; очередной разряд s2fdiv: fidiv c10 ;делим dх раз loop s2fdiv faddp ;складываем разряд за точкой с формируемым числом s2fInc: inc dx ;для точки только увеличиваем dх jmp s2fNext ;пока не дойдем до конца s2fMul10: ;целое число fimul c10 ;умножаем старое на 10 fiadd dig ;и прибавляем очередной разряд jmp s2fNext s2fSign: ;ввод числа закончен, учтем знак cmp bl, 0 ;если - je s2fRet fchs ;то меняем знак s2fRet: clc ;все ок ret s2f_err: stc ;ошибочка fstp st ;выкидаем из стека число ret str2float endp ;преобразование вещественного числа из st в строку по адресу String float2str proc push es push ds pop es ;es=ds lea di, sTemp ;здесь будем формировать строку ftst ;Проверяем число fstsw ax ;флаги в ax sahf ;флаги в регистре флагов jnz f2s_notZero ;не 0 mov dx, 1 ;длина 1 mov bl, 0 ;сбрасываем знак mov ax, '0' ;если 0, то выводим 0 stosw jmp f2s_Ret ;на выход f2s_notZero: ;не 0 mov al, ' ' ; пока считаем, что положительное jnc f2s_sign ;если оно отрицательное, mov al, '-' ; то минус fchs ; и оставляем модуль числа. f2s_sign: stosb ;знак числа ; Пояснение далее пойдёт на примере. ; ST(0) ST(1) ST(2) ST(3) ... ; Отделим целую часть от дробной. ; 73.25 ... что-то не наше fld1 ; 1 73.25 ... fld st(1) ; 73.25 1 73.25 ... ; Остаток от деления на единицу даст дробную часть. fprem ; 0.25 1 73.25 ... ; Если вычесть её из исходного числа, получится целая часть. fsub st(2), st ; 0.25 1 73 ... fxch st(2) ; 73 1 0.25 ... ; Сначала поработаем с целой частью. Считать количество цифр будем в CX. xor cx, cx ; Поделим целую часть на десять, f2s_2: fidiv c10 ; 7.3 1 0.25 ... fxch st(1) ; 1 7.3 0.25 ... fld st(1) ; 7.3 1 7.3 0.25 ... ; отделим дробную часть - очередную справа цифру целой части исходного числа,- fprem ; 0.3 1 7.3 0.25 ... ; от чатсного оставим только целую часть fsub st(2), st ; 0.3 1 7 0.25 ... ; и сохраним цифру fimul c10 ; 3 1 7 0.25 ... fistp dig ; 1 7 0.25 ... inc cx ; в стеке. push dig fxch st(1) ; 7 1 0.25 ... ; Так будем повторять, пока от целой части не останется ноль. ftst fstsw ax sahf jnz f2s_2 ; Теперь выведем её. f2s_3: pop ax ; Вытаскиваем очередную цифру, переводим её в символ и выводим. add al, 30h stosb ; И так, пока не выведем все цифры. loop f2s_3 ; 0 1 0.25 ... ; Итак, теперь возьмёмся за дробную часть, для начала проверив её существование. fstp st(0) ; 1 0.25 ... fxch st(1) ; 0.25 1 ... ftst fstsw ax sahf jz f2s_5 ; Если она всё-таки ненулевая, выведем точку lea ax, sTemp mov cx, di sub cx, ax sub cx, 63 neg cx mov al, '.' stosb ; Помножим дробную часть на десять f2s_4: fimul c10 ; 2.5 1 ... fxch st(1) ; 1 2.5 ... fld st(1) ; 2.5 1 2.5 ... ; отделим целую часть - очередную слева цифру дробной части исходного числа,- fprem ; 0.5 1 2.5 ... ; оставим от произведения лишь дробную часть fsub st(2), st ; 0.5 1 2 ... fxch st(2) ; 2 1 0.5 ... ; сохраним полученную цифру во временной ячейке fistp dig ; 1 0.5 ... ; и сразу выведем. mov ax, dig add al, 30h stosb ; Теперь, если остаток дробной части ненулевой fxch st(1) ; 0.5 1 ... ftst fstsw ax sahf ; и мы вывели менее cx цифр, продолжим loopnz f2s_4 ; 0 1 ... ; Итак, число выведено. Осталось убрать мусор из стека. f2s_5: fstp st(0) ; 1 ... fstp st(0) ; ... mov byte ptr [di], '$' ;закроем строку знаком '$' для функции 9 ; и скопировать в буфер String не более 14 знаков lea si, sTemp lea di, String mov dx, 0 ;длина f2s_6: lodsb stosb ;копируем 1 байт inc dx ;считаем cmp dx, 14 ;копируем только 14 байт !!! (если получится число ; с большим чем 14 байт знаков, то последние усекутся) je f2s_7 ;насильно закрываем '$'! cmp al, '$' jne f2s_6 ;копирование завершаем по '$' dec dx ;отнимем 1 (посчитался байт '$') f2s_7: mov byte ptr [di], '$' ;закроем '$' (для случая обрезания) f2s_Ret: pop es ret float2str endp end
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
Дата отправки: 09.04.2016, 10:31 Консультирует Лысков Игорь Витальевич (Старший модератор): Здравствуйте, vsib2012! Код (Assembler) :: выделить код data segment sRes db 'Y = $' y dw 0 ;здесь будет результат data ends _stack segment stack 'stack' dw 128 dup(?) ;стек лучше задавать не байтами, а словами _stack ends assume cs:code, ds:data, ss:_stack code segment start: mov ax, data mov ds, ax mov ax,49 ;ax = 49 mov bx,7 cwd ;dx:ax = 49 idiv bx ;ax = dx:ax / bx = 49 / 7, остаток dx игнорируем mov si,ax ;сохраним в si mov ax,42 ;ax = 42 mov bx,6 cwd ;dx:ax = 42 idiv bx ;ax = dx:ax / bx = 42 / 7, остаток dx игнорируем add si,ax ;si = 49/7 + 42/7 mov ax,6 ;ax = 6 mov bx,2 imul bx ;dx:ax = 6*2, старшее слово в dx игнорируем add si,ax ;si = 49/7 + 42/7 + 6*2 mov ax,8 ;ax = 8 mov bx,5 mul bx ;dx:ax = 8*5 mov bx,9 idiv bx ;ax = 8*5/9, остаток dx игнорируем mov di,ax ;сохраним в di mov ax,4 ;ax = 4 mov bx,6 imul bx ;dx:ax = 4*6, старшее слово в dx игнорируем sub di,ax ;di = 8*5/9 - 4*6 mov ax,si ;ax = 49/7 + 42/7 + 6*2 cwd ;dx:ax = 49/7 + 42/7 + 6*2 div di ;ax = (49/7 + 42/7 + 6*2) / (8*5/9 - 4*6), остаток dx игнорируем mov si, ax ;сохраним в si mov ax,23 ;ax = 23 add ax,12 ;ax = 23+12 mov bx,26 ;bx = 26 sub bx,4 ;bx = 26-4 cwd ;dx:ax = 23+12 div bx ;ax = (23+12)/(26-4), остаток dx игнорируем mov bx,5 mul bx ;dx:ax = ((23+12)/(26-4))*5 add ax, si ;ax = ((49/7+42/7+6*2)/(8*5/9-4*6))+((23+12)/(26-4))*5 mov [Y],ax ;сохраним результат ;выведем результат из ax push ax ;сохраним число в стеке mov ah, 9 lea dx, sRes int 21h ;выводим сообщение pop ax mov bx, 10 ;система счисления xor cx, cx ;счетчик в стеке test ax, ax ;проверим на знак числа jge div_loop ;>=0 просто выводим neg ax ;ax = -ax push ax ;сохраним mov dl, '-' ;выведем знак минуса mov ah, 2 int 21h pop ax div_loop: ;цикл получения цифр делением на 10 xor dx,dx div bx ;получаем младшую цифру push dx ;запоминаем в стеке inc cx ;считаем test ax,ax ;повторяем пока не ноль в ах jnz div_loop dig_loop: ;цикл вывода цифр в обратном порядке pop dx ;извлекаем цифру add dl,'0' ;переводим в символ mov ah, 2 int 21h ;выводим на экран loop dig_loop xor ax, ax ;ожидаем любую клавишу int 16h mov ax,4c00h int 21h code ends end start
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
Дата отправки: 09.04.2016, 10:35 Консультирует Зенченко Константин Николаевич (Модератор): Здравствуйте, nordhard! Код (Assembler) :: выделить код model tiny code org 100h start: mov al,10110101b;А mov bl,00110111b;В and al,10010111b;обнуляем биты младший разряд нулевой mov cl,3;число сдвигов shr al,cl;сдвигает, т.е. делим shl bl,1;сдвиггаем, т.е. умножаем or bl,al;логически суммируем mov cx,8;будем выводить 8-мь бит @@01: xor al,al;сбрасываем shl bl,1;сдвигаем в CF бит adc al,'0';переводим в символ int 29h;выводим loop @@01;в цикле ret;выход end start Удачи!
Оценить выпуск | Задать вопрос экспертам
главная страница
|
стать участником
|
получить консультацию
|
В избранное | ||