Консультация # 200696: Уважаемые эксперты! Пожалуйста, ответьте на вопрос:Разработать на ассемблере и отладить программу, которая выполняет: 1) ввод с клавиатуры двух 4-значных шестнадцатеричных чисел (для ввода с клавиатуры можно использовать любые чис-ла), которые записываются в качестве содержимого регистров BP и DI; 2) вывод на экран содержимого регистров, запо...
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:Разработать на ассемблере и отладить программу, которая выполняет: 1) ввод с клавиатуры двух 4-значных шестнадцатеричных чисел (для ввода с клавиатуры можно использовать любые чис-ла), которые записываются в качестве содержимого регистров BP и DI; 2) вывод на экран содержимого регистров, заполненных на шаге 1, в виде шестнадцатеричных чисел; 3) вывод на экран содержимого регистров, заполненных на шаге 1, в виде десятичных чисел; 4) вывод на экран содержимого регистров, заполненных на шаге 1, в виде двоичных чисел. Пример информации на экране: ВВЕДИТЕ СОДЕРЖИМОЕ РЕГИСТРА BP AD56<Enter> ВВЕДИТЕ СОДЕРЖИМОЕ РЕГИСТРА DI 7F09<Enter> ЧИСЛА В ШЕСТНАДЦАТЕРИЧНОЙ СИСТЕМЕ (BP) = AD56 (DI) = 7F09 ЧИСЛА В ДЕСЯТИЧНОЙ СИСТЕМЕ (BP) = 44374 (DI) = 32521 ЧИСЛА В ДВОИЧНОЙ СИСТЕМЕ (BP) = 1010110101010110 (DI) = 0111111100001001
Т.к. задание "придумано" не корректно использован компилятор Tasm Смотрите код:
Код [Assembler]
model tiny,pascal locals @@ code org 100h begin: push bp @@00: call OutStr,offset dbInp call OutStr,offset dbBp call InpNum,16 jc @@00 mov bp,ax @@01: call OutStr,offset dbInp call OutStr,offset dbDi call InpNum,16 jc @@01 mov di,ax call OutStr,offset dbHex call OutStr,offset dbOut call OutNum,bp,16,4 call OutStr,offset dbDi call OutNum,di,16,4 call OutStr,offset dbDec call OutStr,offset dbOut call OutNum,bp,10,5 call OutStr,offset dbDi call OutNum,di,10,5 call OutStr,offset dbBin call OutStr,offset dbOut call OutNum,bp,2,16 call OutStr,offset dbDi call OutNum,di,2,16 pop bp ret OutStr proc a:word uses ax,dx mov ah,9 mov dx,a int 21h ret OutStr endp OutNum proc a:word,b:word,c:word uses ax,bx,cx,dx mov ax,a mov bx,b xor cx,cx @@01: xor dx,dx div bx cmp dl,10 jb @@02 add dl,7 @@02: add dl,'0' push dx inc cx or ax,ax jnz @@01 @@03: cmp cx,c je @@04 mov al,'0' push ax inc cx jmp @@03 @@04: pop ax int 29h loop @@04 ret OutNum endp InpNum proc a:word uses bx,cx,dx mov bx,a xor cx,cx @@01: xor ax,ax int 16h cmp al,13 mov ah,al jz @@04 cmp al,'0' jb @@01 cmp al,'9' jbe @@02 and ah,0DFh sub ah,7 @@02: sub ah,'0' cmp bl,ah jbe @@01 push cx push ax int 29H pop cx pop ax xchg cl,ch xor ch,ch xor dx,dx mul bx or dx,dx jz @@03 stc jmp @@04 @@03: add cx,ax jnc @@01 @@04: mov ax,cx ret inpNum endp dbInp db 10,13,'Enter number $' dbHex db 10,13,'Heximal numbers$' dbDec db 10,13,'Deciimal numbers$' dbBin db 10,13,'Binary numbers$' dbOut db 10,13 dbBp db ' [BP]=$' dbDi db ' [DI]=$' end begin
Команды компиляции(название папок, мои, у Вас будут другие):
Пример работы:
Хранить в регистре ВР, рабочую информацию не допустимо, у него другое назначение. Он используется для создания стекового фрейма, обращения к параметрам.
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
Если выпуск не отображается, вы можете прочесть его на сайте
Это сообщение было отправлено на admin10383.deep@blogger.com потому, что вы подписались на рассылку comp.prog.assembler на subscribe.ru. Чтобы гарантировать получение писем от нас — добавьте наш адрес в адресную книгу.
Комментариев нет:
Отправить комментарий