当前位置: 代码迷 >> 汇编语言 >> 怎样显示寄存器的值解决办法
  详细解决方案

怎样显示寄存器的值解决办法

热度:8463   发布时间:2013-02-26 00:00:00.0
怎样显示寄存器的值
datarea segment?
tips db 'Please input a string:',13,10,'$'
? errstr db 'length is too long!',13,10,'$'
exitstr db 'exit','$'
datarea ends
prognam segment ?
main proc far
? assume cs: prognam,ds:datarea,es:datarea
start:
? push ds
? sub ax,ax
? push ax
? mov ax,datarea
? mov ds,ax
? mov ax,datarea
? mov es,ax
? ;+++++++++++++++++++++++++++++++++++++

lea dx,tips
mov ah,9
int 21h

mov bx,0
mov cx,0
mov dx,0
mov di,0
AGAIN:
mov ax,0
mov ax,bx
add ax,cx
add ax,dx
add ax,di
cmp ax,1eh ;如果ax的值大于30就跳转到ERR打印错误信息
ja ERR

mov ax,0
mov ah,01h
? int 21h
cmp al,'$'
je EXIT
cmp al,'0'
jb L1

cmp al,'9'
jbe L2
cmp al,'A'
jb L1
cmp al,'Z'
jbe L3
cmp al,'a'
jb L1
cmp al,'z'
jbe L4

inc bx
jmp AGAIN

ERR:
? lea dx,errstr
mov ah,9h
int 21h
jmp EXIT
L1:
inc bx
jmp GOB
L2:
inc cx
jmp GOB?
L3:
inc dx
jmp GOB
L4:
inc di
jmp GOB

GOB:
cmp ah,'$'
jnz AGAIN
EXIT:
mov ax,bx
mov ah,2h
int 21h
mov ax,cx
mov ah,2h
int 21h
mov ax,dx
mov ah,2h
int 21h
mov ax,di
mov ah,2h
int 21h

? ;++++++++++++++++++++++++++++++

ret
main endp
prognam ends
? end start


代码,还是无法看到dx,bx,cx,di他们的值,求助谢谢.

------解决方案--------------------------------------------------------
探讨
datarea segment
tips db 'Please input a string:',13,10,'$'
errstr db 'length is too long!',13,10,'$'
exitstr db 'exit','$'
datarea ends
prognam segment
main proc far
assume cs: prognam,d……

------解决方案--------------------------------------------------------
就是一个将int转为string的功能,楼主可以参考sscanf
------解决方案--------------------------------------------------------
当然是十六进制的简单了,因为每 4 个二进制位正好对应一个十六进制位,一个简单的循环,移位处理下就可以了。书上一般会有例子的吧。或者,Google 上搜索下吧。CSDN 这里的搜索功能简直是&%$+# 否则这里以前也有很多这样的内容可供参考的。
------解决方案--------------------------------------------------------
代码粗糙,经供参考。
Assembly code
;子程序功能:以十六进制显示寄存器中的值;入口参数DXdisphex proc uses dx        mov cx,4d0:     push cx        mov cl,4        rol dx,cl        push dx        and dx,0fh        cmp dl,10        jb d1        add dl,37h        mov ah,2        int 21h        jmp jxd1:        add dl,30h        mov ah,2        int 21hjx:        pop dx        pop cx        loop d0        retdisphex endp
  相关解决方案