求解一段汇编代码
时间:2010-11-16
来源:互联网
以下是一段代码:按5位十进制的形式显示寄存器BX中的内容,如果BX值小于0,则应在显示数值之前显示‘-’。算法采用除10取余数的方法,从低位向高位求出十进制数
其中有很多地方看不懂:1:PLUS段中的MOV SI,OFFSET(bDisp+4)语句是什么意思?AGAIN段中的ADD DL,30H语句为什么要把30H加给DL,然后执行MOV [SI],DL DEC SI两个语句,我不明白这两句的意思..NEG BX语句也不太明白。。我刚学汇编,有好多不懂的,请高手帮我解释一下,谢谢了!!!!
.MODEL SMALL
.STACK 100H
.CODE
DISPBX PROC
PUSH DS
PUSH DX
PUSH CX
PUSH AX
bDisp DB 5 DUP('0'),'$'
MOV AX,SEG bDisp
MOV DS,AX
AND BX,BX
JNS PLUS
MOV DL,'-'
MOV AH,2
INT 21H
NEG BX
PLUS: MOV SI,OFFSET(bDisp+4)
MOV AX,BX
MOV CX,10
AGAIN: XOR DX,DX
IDIV CX
ADD DL,30H
MOV [SI],DL
DEC SI
AND AX,AX
JNE AGAIN
MOV DX,OFFSET bDisp
MOV AH,9
INT 21H
POP AX
POP CX
POP DX
POP DS
RET
DISPBX ENDP
START: MOV BX,8000H
CALL DISPBX
.EXIT 0
END START
其中有很多地方看不懂:1:PLUS段中的MOV SI,OFFSET(bDisp+4)语句是什么意思?AGAIN段中的ADD DL,30H语句为什么要把30H加给DL,然后执行MOV [SI],DL DEC SI两个语句,我不明白这两句的意思..NEG BX语句也不太明白。。我刚学汇编,有好多不懂的,请高手帮我解释一下,谢谢了!!!!
.MODEL SMALL
.STACK 100H
.CODE
DISPBX PROC
PUSH DS
PUSH DX
PUSH CX
PUSH AX
bDisp DB 5 DUP('0'),'$'
MOV AX,SEG bDisp
MOV DS,AX
AND BX,BX
JNS PLUS
MOV DL,'-'
MOV AH,2
INT 21H
NEG BX
PLUS: MOV SI,OFFSET(bDisp+4)
MOV AX,BX
MOV CX,10
AGAIN: XOR DX,DX
IDIV CX
ADD DL,30H
MOV [SI],DL
DEC SI
AND AX,AX
JNE AGAIN
MOV DX,OFFSET bDisp
MOV AH,9
INT 21H
POP AX
POP CX
POP DX
POP DS
RET
DISPBX ENDP
START: MOV BX,8000H
CALL DISPBX
.EXIT 0
END START
作者: a173988844 发布时间: 2010-11-16
这都是一些基本的指令呀
作者: masmaster 发布时间: 2010-11-16
bDisp DB 5 DUP('0'),'$'
是用来存储用于输出结果的
MOV SI,OFFSET(bDisp+4)
把这个地址存于si,以便存储要输出的结果
ADD DL,30H
是将数值转成对应的ASCII,用于输出
是用来存储用于输出结果的
MOV SI,OFFSET(bDisp+4)
把这个地址存于si,以便存储要输出的结果
ADD DL,30H
是将数值转成对应的ASCII,用于输出
作者: Purpleendurer 发布时间: 2010-11-16
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28