注册 登录
编程论坛 汇编论坛

把二进制转十六进制????

shanshan 发布于 2006-06-01 23:02, 1905 次点击
我们的实验题目:把32位二进制转化成十六进制
;将32位二进制转化成十六进制
data segment
dat dw 0abcdh,1234h
data ends
code segment
assume cs:code,ds:data
start:
mov ch,8
mov ax,data
mov ds,ax
lea si,dat
again: mov cl,4
mov bx,[si]
rol bx,cl
mov al,bl
and al,0fh
cmp al,10
jl less_than10
add al,37h
jmp print
less_than10: add al,30h
print: mov dl,al
mov ah,02h
int 21h
inc si
dec ch
jnz again
ret
code ends
end start
运行时是死循环,我不知道错在哪儿.
各位帮帮忙了!!!!
谢谢!!
2 回复
#2
xxygdufs2006-06-03 07:56
data segment
dat dw 0abcdh,1234h
data ends
code segment
assume cs:code,ds:data
start:
mov ch,8
mov ax,data
mov ds,ax
lea si,dat
again: mov cl,4
mov bx,[si]
rol bx,cl
mov al,bl
and al,0fh
cmp al,10
jl less_than10
add al,37h
jmp print
less_than10: add al,30h
print: mov dl,al
mov ah,02h
int 21h
inc si
dec ch
jnz again
mov ah,4ch
int 21h

code ends
end start
正确的应该是这样.你没有退回DOS的指令,而且里面的RET不要用,它是用在子程序里面的,你里面根本没有子程序.
#3
shanshan2006-06-03 22:14

恩.我改了.
运行结果怎么是A3100000啊????

1