汇编语言的问题

麻烦大家一下
累加器(A)=80H,执行完指令ADD A,#83H后,(A)=多少?辅助进位位AC=多少?

另外问下80H和83H都是补码吧,问下原码都是多少?

10000000
10000011
--------------
100000011
A=03H,第三位没有进位,辅助进位位AC=0;第七位有进位,进位位Cy=1
80H和83H如果为有符号数(-128-+127):80H原码:00H 83H原码:FDH
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-15
(A)=03H AC=0表示没有辅助进位 ,
是不是补码,要看你是否是运算有符号数。若是有符号数,则是补码。
若果是有符号数,80H原码是80H 83H原码FDH
正数补码、反码和原码相同,负数补码求反再加1就得到原码(符号位不变)
第2个回答  2011-01-15
(A)=03H AC=0表示没有辅助进位 ,CY=1表示有进位 负数补码求反再加1就得到原码(负数的话求反的时候最高位不变) 若果是有符号数,80H原码是00H 83H原码FDH
第3个回答  2011-01-14
Mov cx,10 ;这是设定后面rep指令的计数器
Lea di,namesav ;把namesav的地址设定为后面movsw指令的目的地址DI
Mov si,bx ;设定BX中的数据为movsw指令的源地址SI
Rep movsw ;反复将DS:SI指向的16位数据拷贝到ES:DI指向的地址,每次拷贝SI和DI都会自动递增拷贝的字长,拷贝次数就是cx中的数字。所以现在的实际效果就是从DS:SI指向的地址拷贝了2*10=20个字节到ES:DI指向的地址,也就是把BX指向的数据转移到了namesav。

Mov cx,10 ;跟第一行一样
Mov di,bx ;这次把原先的源地址BX给了目的指针
Rep movsw ;执行了第四行后,现在的SI=BX+20,这条指令就把DS:SI处的20个字节拷贝到原来BX指向的地址处。也就是把BX指向的内存区域的后20个字节给挪到前面了。

Mov cx,10 ;还是10次
Lea si,namesav ;再把前面用来暂存数据的地址设定为源地址SI,而执行了上一个Rep指令,现在DI=BX+20。
Rep movsw ;再把前面暂存的数据,也就是原先BX指向区域的前20个字节再考贝到BX指向的后20个字节处。

综合起来就是把BX地址处的前20字节和后20字节交换,前提条件是DS和ES的值是一样的。
相似回答