РАССЫЛКИ ПОРТАЛА RFPRO.RU Лучшие эксперты в разделе Номер выпуска: | 1607 | Дата выхода: | 18.05.2016, 17:21 | Администратор рассылки: | Лысков Игорь Витальевич (Старший модератор) | Подписчиков / экспертов: | 21 / 7 | Вопросов / ответов: | 1 / 1 | Консультация # 189356: Здравствуйте. Прошу ваc помочь решить вот такое задание: ... Консультация # 189356: Здравствуйте. Прошу ваc помочь решить вот такое задание:
Дата отправки: 13.05.2016, 12:24 Вопрос задал: yasha190 (Посетитель) Всего ответов: 1 Страница онлайн-консультации » Консультирует Лысков Игорь Витальевич (Старший модератор): Здравствуйте, yasha190! Держите три программки...
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, 4 ;ax = 4 cwd ;dx:ax = 4 mov bx, 2 idiv bx ;ax = 4/2, dx отбрасываем mov di, 17 sub di, ax ;di = 17-4/2 mov ax, 14 ;ax = 14 mov bx, 5 imul bx ;dx:ax = 14*5 add ax, 37 adc dx, 0 ;dx:ax = 37+14*5 mov bx, 2 idiv bx ;ax = (37+14*5)/2, остаток в dx отбрасываем mov si, bx ;si = ax = (37+14*5)/2 mov ax, 5 mov bx, 6 imul bx ;dx:ax = 5*6 add ax, si ;ax = (37+14*5)/2+5*6 cwd ;dx:ax = (37+14*5)/2+5*6 idiv di ;ax = ((37+14*5)/2+5*6)/(17-4/2), dx отбрасываем mov di, ax ;di = ((37+14*5)/2+5*6)/(17-4/2) mov ax, 5 ;ax = 5 mov bx, 4 imul bx ;dx:ax = 5*4, dx отбрасываем add ax, di ;ax = ((37+14*5)/2+5*6)/(17-4/2) + 5*4 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
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, 36 ;ax = 36 cwd ;dx:ax = 36 mov bx, 4 idiv bx ;ax = 36/4, dx отбрасываем mov di, ax ;di = 36/4 mov ax, 35 ;ax = 35 cwd ;dx:ax = 35 mov bx, 8 idiv bx ;ax = 35/8, dx отбрасываем add di, ax ;di = 36/4 + 35/8 mov ax, 15 sub ax, 7 cwd ;dx:ax = 15-7 mov bx, 2 imul bx ;dx:ax = (15-7)*2 add ax, 34 adc dx, 0 ;dx:ax = 34+(15-7)*2 idiv di ;ax = (34+(15-7)*2)/(36/4+35/8), dx отбрасываем mov di, ax ;di = (34+(15-7)*2)/(36/4+35/8) mov ax, 34 ;ax = 34 mov bx, 2 imul bx ;dx:ax = 34*2 xchg ax, di ;ax = (34+(15-7)*2)/(36/4+35/8), di = 34*2 sub ax, di ; ax = (34+(15-7)*2)/(36/4+35/8) - 34*2 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
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, 4 ;ax = 4 cwd ;dx:ax = 4 mov bx, 3 imul bx ;ax = 4*3, dx отбрасываем sub ax, 38 ;ax = 4*3-38 neg ax ;ax = 38-4*3 cwd ;dx:ax = 38-4*3 mov bx, 3 idiv bx ;ax = (38-4*3)/3, dx отбрасываем mov di, ax ;di = (38-4*3)/3 mov ax, 14 ;ax = 14 sub ax, 5 ;ax = 14-5 mov bx, 3 imul bx ;dx:ax = (14-5)*3 add ax, 36 adc dx, 0 ;dx:ax = 36+(14-5)*3 idiv di ;ax = (36+(14-5)*3)/((38-4*3)/3), dx отбрасываем mov bx, 3 imul bx ;dx:ax = ((36+(14-5)*3)/((38-4*3)/3))*3 sub ax, 3 ;ax = ((36+(14-5)*3)/((38-4*3)/3))*3-4, dx отбрасываем 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
Оценить выпуск | Задать вопрос экспертам главная страница | стать участником | получить консультацию техническая поддержка Дорогой читатель! Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно! МЫ РАБОТАЕМ ДЛЯ ВАС! |
Комментариев нет:
Отправить комментарий