帮忙注释下这个汇编程序

来源:百度知道 编辑:UC知道 时间:2024/07/07 09:37:02
最好能让我明白他的思路啊!!
data segment
buf1 db "16jzs: $" ;显示输入十六进制数提示信息
buf2 db "10jzs: $" ;显示输出十进制数显示信息
pab dw 10000,1000,100,10,1
data ends
stack segment para stack 'stack'
db 10 dup (?)
stack ends
code segment
assume cs:code,ds:data,ss:stack
start:mov ax,data
mov ds,ax
mov si,offset pab
mov dx,offset buf1
mov ah,9
int 21h
xor ax,ax
xor bx,bx
mov ch,4
qq:mov ah,1
int 21h
cmp al,'f'
ja exit1
jmp aaa1
bbb1:cmp al,'F'
Ja exit1
jmp aaa2
bbb2:cmp al,'9'
ja exit1
jmp ccc2
aaa1:cmp al,'a'
jae ccc1
jmp bbb1
ccc1:sub al,20h
cmp al,'A'
aaa2:
cmp al,'A'
jae ccc2
jmp bbb2
ccc2:
cmp al,'0'
jb exit1
sub al,30h
cmp al,9
ja nex
jmp oo
nex:sub al,7
oo:and al,0fh
add bl,al
c

data segment
buf1 db "16jzs: $" ;显示输入十六进制数提示信息
buf2 db "10jzs: $" ;显示输出十进制数显示信息
pab dw 10000,1000,100,10,1
data ends
stack segment para stack 'stack' ;定义一个堆栈段
db 10 dup (?) ;申请10个字节的空间
stack ends ;段定义结束
code segment
assume cs:code,ds:data,ss:stack
start:
mov ax,data
mov ds,ax ;把数据段的地址传到数据段寄存器
mov si,offset pab ;把pab的地址给si
mov dx,offset buf1 ;同上
mov ah,9
int 21h ;调用9号dos功能
xor ax,ax ;清零ax
xor bx,bx ;清零bx
mov ch,4
qq:
mov ah,1
int 21h ;调用1号dos功能
cmp al,'f';比较al的值和f
ja exit1 ;如果不低于或等于则跳转到exit1
jmp aaa1 ;无条件跳转到aaa1
bbb1:
cmp al,'F' ;比较al的值和F
Ja exit1 ;jmp aaa2
bbb2:cmp al,'9'; 比较al的值和9
ja exit1 ;如果不低于或等于则跳转到exit1
jmp ccc2 ;无条件跳转到ccc2
cmp al,'a' ;比较al的值和9
jae ccc1 ;高于或等于则转移到ccc1
jmp bbb1 ;无条件转移
ccc1:
sub al,20h ;减法
cmp al,'A'