一些汇编的问题

来源:百度知道 编辑:UC知道 时间:2024/07/08 11:38:32
问几个问题...

1.0010-1001=?
0000-0011=?

2.DS:[SI]什么意思

3.MOV DX,WORD PTR [BX],1什么意思

4.如何判断进位CF

回答得好...通俗易懂的加分...
我有份汇编的试题...谁能帮我做做...汇编我真的一点都不懂...我是搞C#的..谢谢大家了...

1.用二进制规则借一当二进行运算,结果影响状态标志位。
0010-1001=1001
0000-0011=1101
2.DS:[SI]表示数据段偏移地址为SI所指向内存单元
3.MOV DX,WORD PTR [BX],1表示将数据段偏移地址为BX所指向单元中的一个字取出送给寄存器DX
4.CF是进位标志位,当参与运算的最高位向上形成进位或借位时CF=1,否则CF=0。

1、0010
- 1001
= 0000,一个正数减一个负数等于0了,这显然与常理不合,所以运算结果有溢出。
0000
- 0011
= 1101,用0减一个数其实就是求一个数的相反数。
2、DS:[SI]给出了存储器中的一个存储单元的逻辑地址。
3、word ptr是设置访问主存时的类型属性为字节,即按字节访问主存单元,那么DS:[BX]指示的一个字节的值就被传送到了寄存器DX。
4、CPU进行数值运算时,同时按有符号和无符号数设置进位标志CF和溢出标志OF。就是说,把你运算的过程看作无符号数运算,在这个过程中,最高位有进位或者借位,则CF=1,否则CF=0。
可能说的不是太明白,如果还有问题可以发消息给我,或者加693326426帮你解答.

针对ghost2876的答案,
1、
0010 - 1001 确实溢出,不过应该等于1001吧,算法:0010前补1,变为--10010,然活10010-1001,得01001,取后4位.

4、
可以用跳转指令jc
cf=1时,jc指令进行跳转。
也有旁门点的方法:
xor al,al
rol al,1
这两条指令使al=cf

刚学汇编,上面是我生平第二条自己想出来汇编程序,仅供参考

1、0010-1001=1001,算法如楼上所说:0010前补1,变为10010
2、DS:[SI]给出了存储器中的一个存储单元的逻辑地址。所指的地址是:段 地址DS,偏侈地址SI所指的内存单元。
例:DS=1000H,S