
汇编语言 如何将计算结果用十进制表示出来
计算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 展开
假设输入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 展开
1个回答
展开全部
48在ax或者y里应该是以00110110形式存在的吧
--是 0011 0000B。
ax 除10 余数入栈不就是把1、1、0、1、1、0分别入栈么
--不是。
--你说这些,是除以2的余数。
怎么到let2就成了十进制的数了
--因为是除以10。
为什么栈里的数变成了4和8
--因为是除以10。
--是 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---零,不循环了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询