Показать на экране введенное числовое значение в hex-виде - Assembler
Формулировка задачи:
Написал программу, выдает ошибки. Не знаю как их исправить, и вроде как из-за одной остальные и появились.Помогите пожалуйста их исправить.
----------------------------------------------------------------------------------------------------------------------------------------
Задача:
Двуйбайтный код вводится с клавиатуры в двоичном виде. Показать на экране его числовое значение в hex виде.
Мой код
.386 dseg segment use16 text1 db 13,10 'Type BIN: $' text2 db 13,10 0Dh,0Ah,'Result..: ',0Dh,0Ah,'$' Buf db 17,18 dup(?) dseg ends cseg segment use16 assume cs:cseg, ds:dseg m1: mov cx,dseg mov ds,cx mov ah,9 lea DX,text1 int 21h mov ah,0Ah lea DX,Buf int 21h mov DX,DS:Buf lea Di,DS:Buf+2 mov CX,DS:Buf+1 m2: cmp DS:[DI],31h jne short m3 ;если не равно or AX, 00000001b m3: shl AX,1 inc DI loop m2 mov ah,9 lea DX,text2 int 21h mov DX,AX call PECHAT ;Печатает символ и переводит курсор на позицию вправо WRITE proc mov AH,9 xor BH,BH mov BL,07H ;mov CX,1 mov AL,DL int 10h inc DL ret WRITE endp ;Печатает одну шестнадцатеричную цифру (младшую тетраду DL) ;(старшая тетрада должна быть равна 0) ;DL - цифра NA_CONSOL proc cmp DL,0Ah jae BUKVA add DL,30h JMP POKAZ BUKVA: add DL,37h POKAZ: call WRITE ; ------ СДЕЛАТЬ ПЕЧАТЬ ret NA_CONSOL endp ;Печатает две шестнадцатеричные цифры RASHIREN proc mov DH,DL mov CL,4 shr DL,CL call NA_CONSOL mov DL,DH and DL,0Fh call NA_CONSOL ret RASHIREN endp PECHAT proc ;двухбайтное число на консоль mov CX,DX call RASHIREN xchg DL,CH call RASHIREN ret PECHAT endp cseg ends end PECHAT ;Завершаем программу mov ah, 4ch int 21h cseg ends end m1
Решение задачи: «Показать на экране введенное числовое значение в hex-виде»
textual
Листинг программы
cmp byte ptr ds:[di],31h
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д