汇编语言 如何将计算结果用十进制表示出来

计算y=5x-18结果为负求补为正直接保存结果假设输入x=-6那么y=-48将-48求补放入y这里是将结果循环除10把余数放入栈内直到商为0再把栈内的余数拿出来加上003... 计算y=5x-18 结果为负求补 为正直接保存结果
假设输入x=-6 那么y=-48

将-48求补放入y

这里是将结果循环除10 把余数放入栈内 直到商为0
再把栈内的余数拿出来加上0030H得到十进制结果

......
x db -6
y dw ?
cc db 0ah,0dh,'y= $'
......

中间代码是将结果转为正数放入ax

.......
mov y,ax
mov cx,0
mov bx,10

let1:
mov dx,0
inc cx
idiv bx
push dx
cmp ax,0
jnz let1
mov dx offset cc
mov ah,9
int 21h

let2:
....
let2就是循环把栈里的余数放到ax 再加0030h 2号功能显示字符 dec cx 直到为0

。。。。。
48在ax或者y里应该是以00110110形式存在的吧
ax 除10 余数入栈不就是把1、1、0、1、1、0分别入栈么
怎么到let2就成了十进制的数了
为什么栈里的数变成了4和8
展开
 我来答
做而论道
高能答主

2015-06-27 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3.1万
采纳率:82%
帮助的人:8461万
展开全部
48在ax或者y里应该是以00110110形式存在的吧
--是 0011 0000B。

ax 除10 余数入栈不就是把1、1、0、1、1、0分别入栈么
--不是。
--你说这些,是除以2的余数。

怎么到let2就成了十进制的数了
--因为是除以10。

为什么栈里的数变成了4和8
--因为是除以10。
追问
ax里的00110000B什么时候变成48的
追答
不用变。
0011 0000B,就是等于 48。

ax里的00110000B,写成十进制,就是48。

--------------
let1:
mov dx,0
inc cx
idiv bx----DXAX / BX,AX是商为4、DX是余为8
push dx---8,压栈了
cmp ax,0
jnz let1---非零,就循环

let1:
mov dx,0
inc cx
idiv bx----DXAX / BX,AX是商为0、DX是余为4
push dx---4,压栈了
cmp ax,0
jnz let1---零,不循环了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式