谁能为每句后面加注释:说明这句的作用。谢谢!

来源:百度知道 编辑:UC知道 时间:2024/07/01 01:21:13
data segment
data ends
stack segment para stack 'stack'
db 100h dup(?)
stack ends
code segment
assume cs:code,ds:data,ss:stack
start:
mov ax,data
mov ds,ax
call decibin
call crlf
call binihex
call crlf
mov ah,4ch
int 21h
decibin proc near
push ax
push cx
pushf
mov bx,0
newchar:
mov ah,1
int 21h
sub al,30h
jl exit
cbw
xchg ax,bx
mov cx,10
mul cx
xchg ax,bx
add bx,ax
jmp newchar
exit: popf
pop cx
pop ax
ret
decibin endp

binihex proc near
push ax
push cx
push dx
pushf
mov ch,4
rotate:

data segment ;定义数据段
data ends ;数据段定义结束
stack segment para stack 'stack' ;定义堆栈段
db 100h dup(?) ;预留50个字的堆栈空间
stack ends ;堆栈段定义结束
code segment ;定义代码段
assume cs:code,ds:data,ss:stack ;段寄存器关联说明
start: ;代码段第一条指令从这里开始
mov ax,data ;数据段段址→ax
mov ds,ax ;ax→ds,给数据段段寄存器赋值
call decibin ;调用子程序,键盘输入几位十进制数并将其转换成十六进制数
call crlf ;调用子程序,输出一个回车、换行
call binihex ;调用子程序,将bx中的二进制数转换成可以显示的十六进制数并显示
call crlf ;调用子程序,输出一个回车、换行
mov ah,4ch ;结束程序
int 21h ;dos功能调用

decibin proc near ;定义子程序decibin
; 子程序:键盘输入几位十进制数并将其转换成十六进制数
push ax ;入栈保存ax寄存器
push cx ;入栈保存cx寄存器
pushf ;入栈保存标志寄存器
mov bx,0 ;0→bx
newchar:
mov ah,1 ;dos功能调用1号功能:带回显的控制台输入
int 21h ;dos功能调用
sub al,30h ;al-30h→al
jl exit ;al<0,转去恢复相关寄存器的值,结束子程序,返回调用者
cbw ;al的