21,459
社区成员
发帖
与我相关
我的任务
分享
CODES SEGMENT
ASSUME CS:CODES
START:
;此处输入代码段代码
call hexibin
call crlf
call binidec
call crlf
hexibin proc near
mov bx,0
newchar:
mov ah,01h
int 21h
sub al,30h
jl exit
cmp al,10d
jl add_to
sub al,27h
cmp al,0ah
jl exit
cmp al,10h
jge exit
add_to:
mov cl,4
shl bx,cl
mov ah,0;ax由ah,al组成,而al中存的是输入字符所代表的十六进制的值,所以ah得初始化为0,这样ax的结果才正确
add bx,ax
jmp newchar
exit:
ret
hexibin endp
binidec proc near
mov cx,10000d;BX寄存器是16位,最大值也只有65535
call dec_div
mov cx,1000d
call dec_div
mov cx,100d
call dec_div
mov cx,10d
call dec_div
mov cx,1d
call dec_div
ret
binidec endp
dec_div proc near
mov ax,bx
mov dx,0
div cx
mov bx,dx
mov dl,al;商在AX寄存器中,而要显示的字符的ASCII码须放在dl寄存器中,因为商是在0~9之间,故只需把AX的低位AL给DL就可以
add dl,30h
mov ah,02h
int 21h
ret
dec_div endp
crlf proc near
mov al,0ah
mov ah,02h
int 21h
mov dl,0dh
mov ah,02h
int 21h
ret
crlf endp
CODES ENDS
END START
crlf proc near
mov al,0ah ;* 因为这里应该是 mov dl, 0ah
mov ah,02h
int 21h
mov dl,0dh
mov ah,02h
int 21h
ret
crlf endp