回 帖 发 新 帖 刷新版面

主题:怎么从键盘接收一个四位的十六进制数,并在终端上显示与他等值的二进制数

[font=隶书]怎么从键盘接收一个四位的十六进制数,并在终端上显示与他等值的二进制数[/font][em2]

回复列表 (共5个回复)

沙发

data segment
  array  db 100 dup(?)
  messa  db 'input a number',0ah,0dh,'$'
  messb  db 'wrong number',0ah,0dh,'$'
  messc  db 'press Esc to exit,Enter to continue',0ah,0dh,'$'
  messd  db 0ah,0dh,'$'
data ends
stack segment stack
   db 100 dup(?)
stack ends
code segment
   assume cs:code, ds:data,ss:stack
start:
   mov ax,data
   mov ds,ax
program:
   mov ah,9
   mov dx,offset messc
   int 21h
   mov ah,1
   int 21h
   cmp al,1bh
   je exit
   mov ah,9
   mov dx,offset messa
   int 21h


   mov cx,4
   mov bx,offset array
hhe :
   mov ah,1
   int 21h
   mov [bx],al
   add bx,1
   loop hhe
   mov ah,9
   mov dx,offset messd
   int 21h
  

   mov cx,4

   mov bx,offset array
sign:
   mov al,[bx]
   cmp al,'0'
   jb erro
   cmp al,'f'
   ja erro
   cmp al,'9'
   ja char
   sub al,'0'
   jmp shuchu
char:
   or al,20h
   cmp al,'a'
   jb erro
   cmp al,'f'
   ja erro
   sub al,'a'
   add al,10
shuchu:
  
   push cx
   mov cx,4
   shl ax,cl
lops:
   rcl al,1
   jc out1
out0:
   push ax
   mov dl,'0'
   mov ah,2
   int 21h
   pop ax
   loop lops
   jmp hehe
out1:
   push ax
   mov dl,'1'
   mov ah,2
   int 21h
   pop ax
   loop lops
hehe:
   pop cx
   add bx,1
   loop sign
   mov ah,9
   mov dx,offset messd
   int 21h
   jmp program
erro:
   mov dx,offset messb
   mov ah,9
   int 21h
   
   jmp program
exit:
   mov ah,4ch
   int 21h
code ends
   end start

板凳

谢谢啊

3 楼

错误的地方都改了,不过只能执行像 a2f4  这样两个字节的,如果想任意长的,稍微改一下
就可以了,如果要那样的,再跟我说吧,我再改
现在上面的程序已经编译执行成功
花了我一个小时时间调试

4 楼

真的谢谢你了,

5 楼

我这里也有一个,版主可以看看
.model small
.386
.code
main proc far
start:
push ds
mov  ax,0
push ax
mov  ax,0
mov  cx,4
mov  dx,0
input:
mov  ah,1H
int  21H
cmp  al,30H
jl   input
    cmp  al,39H
    jle  s
cmp  al,61H
jl   input
cmp  al,66H
jg   input
sub  al,27H
s:
sub  al,30H
add  dl,al
cmp  cx,1H
je   f
rol  dx,4

f:
loop input
exit:
call print
ret
main endp

print proc near
mov cx,10H
p:
             rol  dx,1
push dx
and  dx,1
add  dx,30H
mov  ah,2
int  21H
pop  dx
loop p
ret
print endp
end start

我来回复

您尚未登录,请登录后再回复。点此登录或注册