
我大概说下,好久没动这个了,有可能不会。。呵呵~~
MOV AX,0FF64H //ax=0xff al=0x64
NEG AL //al=0-0x64=0x9c
SUB AL,9DH //al=0x9c-0x9d=0xff 此时,AX=0XFFFF
NEG AX //ax=0-0xff=0x01
DEC AL //al=0x01-1=0
NEG AX //AX=0-0=0
嗯。。结果就为零了。。
NEG XX 结果就是将0-XX
SUB AL,9DH 结果是AL=AL-9DH
明白不?
x+y补 = x补 + y补
x-y补 = x补 + -y补
=====================
求-y补的方法:①求出y补 ② 第一步求到的数,连同符号位全部“求反”。③ 最后末尾加1
例:y=01001
② 10110
③ 10111
所以-y补 = 10111
====================
上题:x+y:
(1)x补 = 01001 //正数的补码等于正数
y补 = 01100
01001+01100 = 10101
模4补码表示 001001 + 001100 = 010101 // 01表示两个正数之和大于或等于1的情况,称为数值的“上溢”
(2)x补= 10100数值位取反等于11011 末尾加1等于 11100 //真值为负数时,求补码的方法是,符号位保持不变,数值位取反后末尾加1
y补 = 01001
11100+01001 = (溢出了)用模4补码表示为 100101 // 10表示溢出,但是最高位为1表示为负数,10表示为小于或等于-1的情况,称为“下溢”
===========================
上题:x-y
(1)这个比较简单,自己根据我写的方法算算
(2)x-y补 = x补 + -y补
x补= 11100 // 负数求补,符号位保持不变,真值位取反后,末尾加1
y补 = 01001
-y补 = 10110 + 1 = 10111
11100 + 10111 = 110011
#include <stdioh>
int main() {
int m,n = 0,t = 0;
scanf("%d",&m);
/填写程序段begin/
while(m) {
t = m%10;
if(t%2 == 0) ++n;
m /= 10;
}
printf("偶数个数为:%d\n",n); //计算出来偶数的个数赋值给n输出
return 0;
/end/
}
就是1111 1111求补最简单的办法就是用 1 0000 0000去减那个数,得出来的就是要求的东西还有楼主不要随便打负号有没有负号是不一样的
例如1 0000 0000-0000 1000=1111 1000求出来的就是8的补码
-001111-000101=????
此题没有溢出!
因为:
-001111补码:110001
-000101补码:111011
相加:
110001+111011=101100
101100原码:-010100
只有当减数与被减数的符号相反,但是结果与减数符号相同时,才产生溢出
以上就是关于一道关于汇编程序的问题全部的内容,包括:一道关于汇编程序的问题、用补码运算方法求x+y=x-y= (1) x= 0.1001 y= 0.1100 (2) x= -0.0100 y= 0.1001、求将下列程序补充完成!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)