想知道这段代码的一些具体意思,很多地方不大懂。
时间:2011-12-15
来源:互联网
data segment
mode1 db '1. xiao xie to da xie',0ah,0dh
mode2 db '2. da xie to xiao xie',0ah,0dh
mode3 db '3. B(2) to H(16)',0ah,0dh
mode4 db '4. H(16) to B(2)',0ah,0dh
mode5 db '5. H(16) to D(10)','$'
xtod db 'input a low letter:$'
dtox db 'input a capital letter:$'
BtoHh db 'input a number of binary(0000--1111):$'
HtoBh db 'input a number of hex(0-F):$'
HtoDh db 'input a number of hex(0--F):$'
buf0 db 17
buf1 db 0
buf db 17 dup('$')
num db 0
data ends
input macro
mov ah,1
int 21h
endm
cr macro
push ax
push dx
mov dl,0ah
mov ah,2
int 21h
mov dl,0dh
mov ah,2
int 21h
pop dx
pop ax
endm
writes macro a
lea dx,a
mov ah,9
int 21h
endm
write macro c
mov dl,c
mov ah,2
int 21h
endm
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
go: writes mode1
cr
mov ah,1
int 21h
cmp al,'q'
jz done
cmp al,'1'
jz R1
cmp al,'2'
jz R2
cmp al,'3'
jz R3
cmp al,'4'
jz R4
cmp al,'5'
jz R5
jmp done
R1: call smalltobig
jmp go
R2: call bigtosmall
jmp go
R3: call BtoH
jmp go
R4: call HtoB
cr
jmp go
R5: call HtoD
jmp go
done: mov ah,4ch
int 21h
smalltobig proc
writes xtod
cr
input
cr
sub al,20h
write al
cr
ret
smalltobig endp
bigtosmall proc
writes dtox
cr
input
cr
add al,20h
write al
cr
ret
bigtosmall endp
BtoH proc
writes BtoHh
cr
mov bl,0
loopa: mov ah,1
int 21h
cmp al,13
jz n
cmp al,30h
jb loopa
cmp al,31h
ja loopa
and al,0fh
add bl,al
shl bl,1
jmp loopa
n: cr
shr bl,1
cmp bl,9
jb nn
add bl,7
nn: add bl,30h
write bl
cr
ret
BtoH endp
HtoB proc
writes HtoBh
cr
input
cr
sub al,30h
cmp al,9
jna loop1
sub al,7
loop1: mov cl,4
shl al,cl
mov cl,4
mov bl,al
gg: shl bl,1
jc lop
mov dl,'0'
jmp lop1
lop: mov dl,'1'
lop1: mov ah,2
int 21h
loop gg
ret
HtoB endp
HtoD proc
writes HtoDh
cr
mov bx,0
tt: input
cmp al,13
jz y1
cmp al,'9'
jna y2
sub al,7
y2: sub al,30h
mov cl,4
mov ah,0
add bx,ax
shl bx,cl
jmp tt
y1: cr
shr bx,cl
mov ax,bx
aaa
add ax ,3030h
mov bx,ax
write bh
write bl
cr
ret
HtoD endp
code ends
end start
我只看懂这个代码大概的作用,但很多地方不知道具体意思,希望有高手能解释下,一些重要的地方、关键地方注释下,万分感谢~!
mode1 db '1. xiao xie to da xie',0ah,0dh
mode2 db '2. da xie to xiao xie',0ah,0dh
mode3 db '3. B(2) to H(16)',0ah,0dh
mode4 db '4. H(16) to B(2)',0ah,0dh
mode5 db '5. H(16) to D(10)','$'
xtod db 'input a low letter:$'
dtox db 'input a capital letter:$'
BtoHh db 'input a number of binary(0000--1111):$'
HtoBh db 'input a number of hex(0-F):$'
HtoDh db 'input a number of hex(0--F):$'
buf0 db 17
buf1 db 0
buf db 17 dup('$')
num db 0
data ends
input macro
mov ah,1
int 21h
endm
cr macro
push ax
push dx
mov dl,0ah
mov ah,2
int 21h
mov dl,0dh
mov ah,2
int 21h
pop dx
pop ax
endm
writes macro a
lea dx,a
mov ah,9
int 21h
endm
write macro c
mov dl,c
mov ah,2
int 21h
endm
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
go: writes mode1
cr
mov ah,1
int 21h
cmp al,'q'
jz done
cmp al,'1'
jz R1
cmp al,'2'
jz R2
cmp al,'3'
jz R3
cmp al,'4'
jz R4
cmp al,'5'
jz R5
jmp done
R1: call smalltobig
jmp go
R2: call bigtosmall
jmp go
R3: call BtoH
jmp go
R4: call HtoB
cr
jmp go
R5: call HtoD
jmp go
done: mov ah,4ch
int 21h
smalltobig proc
writes xtod
cr
input
cr
sub al,20h
write al
cr
ret
smalltobig endp
bigtosmall proc
writes dtox
cr
input
cr
add al,20h
write al
cr
ret
bigtosmall endp
BtoH proc
writes BtoHh
cr
mov bl,0
loopa: mov ah,1
int 21h
cmp al,13
jz n
cmp al,30h
jb loopa
cmp al,31h
ja loopa
and al,0fh
add bl,al
shl bl,1
jmp loopa
n: cr
shr bl,1
cmp bl,9
jb nn
add bl,7
nn: add bl,30h
write bl
cr
ret
BtoH endp
HtoB proc
writes HtoBh
cr
input
cr
sub al,30h
cmp al,9
jna loop1
sub al,7
loop1: mov cl,4
shl al,cl
mov cl,4
mov bl,al
gg: shl bl,1
jc lop
mov dl,'0'
jmp lop1
lop: mov dl,'1'
lop1: mov ah,2
int 21h
loop gg
ret
HtoB endp
HtoD proc
writes HtoDh
cr
mov bx,0
tt: input
cmp al,13
jz y1
cmp al,'9'
jna y2
sub al,7
y2: sub al,30h
mov cl,4
mov ah,0
add bx,ax
shl bx,cl
jmp tt
y1: cr
shr bx,cl
mov ax,bx
aaa
add ax ,3030h
mov bx,ax
write bh
write bl
cr
ret
HtoD endp
code ends
end start
我只看懂这个代码大概的作用,但很多地方不知道具体意思,希望有高手能解释下,一些重要的地方、关键地方注释下,万分感谢~!
作者: dhxaohei 发布时间: 2011-12-15
请具体指出!!
作者: yh_no_code 发布时间: 2011-12-15
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28