📄 dec-hex.asm
字号:
;键盘输入十进制数到16进制数的转换,使用字符串输入输出方式
stack segment stack
dw 100 dup(?)
stack ends
data segment
buff1 db 10,?,10 dup(?)
buff2 db 10,?,10 dup(?)
str db "input a data string$"
crlf db 0dh,0ah,'$'
mesg1 db "Press y to continue...$"
data ends
code segment
assume cs:code,ds:data,ss:stack
main proc far
mov ax,data
mov ds,ax
begin:
lea dx,crlf
mov ah,9
int 21h
mov ah,9
lea dx,str
int 21h
mov ah,9
lea dx,crlf
int 21h
mov ah,0ah
lea dx,buff1
int 21h
call buff1_bx
lea dx,crlf
mov ah,9
int 21h
call bx_buff2
lea dx,mesg1
mov ah,9
int 21h
mov ah,1
int 21h
cmp al,'y'
jz begin
mov ah,4ch
int 21h
main endp
buff1_bx proc
mov cl,buff1+1
xor ah,ah
lea si,buff1+2
mov bx,0
L:
mov al,[si]
sub al,30h
jl exit
cmp al,9d
jg exit
cbw
xchg ax,bx
mov dx,10d
mul dx
xchg ax,bx
add bx,ax
inc si
loop L
exit : ret
buff1_bx endp
bx_buff2 proc
mov ax,bx
mov dx,0
lea si,buff2+2
mov cx,16*16*16
div cx
add al,30h
cmp al,3ah
jl xx1
add al,7
xx1:mov byte ptr [si],al
inc si
mov ax,dx
mov dx,0 ;因为是无符号数,因此不能进行符号扩展
mov cx,16*16
div cx
add al,30h
cmp al,3ah
jl xx2
add al,7
xx2:
mov byte ptr [si],al
inc si
mov ax,dx
mov cl,16
div cl
add al,30h
cmp al,3ah
jl xx3
add al,7
xx3:
mov byte ptr [si],al
inc si
mov al,ah
mov ah,0 ;因为是无符号数,因此不能进行符号扩展
mov cx,1
div cl
add al,30h
cmp al,3ah
jl xx4
add al,7
xx4:mov byte ptr [si],al
inc si
mov byte ptr [si],'$'
mov ah,9
lea dx,buff2+2
int 21h
lea dx,crlf
mov ah,9
int 21h
ret
bx_buff2 endp
code ends
end main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -