DATA SEGMENT
NUM DB 09H,16H,04H,17H,05H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AL,[NUM+2]
IMUL [NUM+3]
MOV BL,AL
MOV AL,[NUM]
ADD AL,[NUM+1]
SUB AL,BL
CBW
IDIV [NUM+4]
MOV BL,AL
MOV CL,4
SHR AL,CL
MOV CL,0AH
DIV CL
ADD DL,30H
MOV AH,02H
INT 21H
MOV AL,BL
MOV CL,4
SHL AL,CL
SHR AL,CL
MOV CL,0AH
DIV CL
ADD DL,30H
MOV AH,02H
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
这个汇编程序为什么运行出来不对?
答案:2 悬赏:70 手机版
解决时间 2021-07-30 09:02
- 提问者网友:浮克旳回音
- 2021-07-30 05:50
最佳答案
- 五星知识达人网友:洒脱疯子
- 2021-07-30 06:32
你这程序的目的是什么呢?
全部回答
- 1楼网友:舊物识亽
- 2021-07-30 07:04
算法错了!不知道你是想输出16进制还是10进制,
1.移4位通常然后调用2号中断就可以输出16进制,
但你后面除10貌似又想输出10进制,
2.输出10进制的做法应该是除10取余进栈计数到余数为0止,
然后再调用2号中断出栈输出该10进制数
此算法还存在一个重大的错误,就是在除05H之前算出来的结果就是负数
所以不能直接除,还应该判断一下是否是负数,是则输出负号且neg一下得到它的相反数也就是取绝对值,
把符号位置0,否则符号位会参与运算,导致结果出错!!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯