一些汇编的问题
发布网友
发布时间:2022-05-23 23:44
我来回答
共5个回答
热心网友
时间:2024-03-10 03:31
第一个小题,实际是计算机内有符号数的二进制补码运算问题:0010-1001,先将第二个数1001变补,就是整个数按位取反(0->1,1->0),最低位再+1,得0111,然后再和第一个数相加,得1001.0000-0011同样可得1101.
第二个小题,这是8086CPU汇编指令的寻址方式表示,属于寄存器间接寻址,含义是当前DS寄存器指向的数据段中,由寄存器SI指定的内存单元.基本作用,大概类似于:先由DS指定一个小的存储区域,再由SI指出这个数据离当前存储区域第一个元素的位置差.
第三个小题,从表面看应该是个错误题.为慎重我再打一边:MOV DX,WORD PTR [BX],1 8086基本汇编里没有这种写法.我估计应该是 MOV DX,WORD PTR [BX] 1,就是说[BX]和1之间没有那个逗号就对了.如果这样,这是8086汇编里的寄存器相对寻址方式,指令的含义是:将当前DS寄存器指向的数据段中,由寄存器BX指向的内存单元,向后再偏移一个单元(就是地址号再增加1),把其中的内容,以字类型传递到DX寄存器中.所谓的字类型,就是16位二进制数的编码格式.如果这个题没有那个最后的1,那就是前面的人回答的是对的,将当前寄存器DS指向的数据段中,寄存器BX指向的单元的内容以字类型传递到寄存器DX中.
第四个小题,简单地讲,如果编码串最左边的数据,向高位有进位,那就由CF来保存.因为计算机里保存数据的器件的个数和位数都是固定的,有限的,所以,计算机不是什么数据都可以保存下来的,有一些信息就由状态位来记录.包括进位.比如 4+14.换成四位二进制,就是 0100 + 1110 = 1 0010,这里答案中的最左边的1,实际成了第五位了.如果你的计算机就是4位的,那么这个第五位,就是进位位,由CF来记录.
热心网友
时间:2024-03-10 03:32
1、0010-1001=1001,算法如楼上所说:0010前补1,变为10010
2、DS:[SI]给出了存储器中的一个存储单元的逻辑地址。所指的地址是:段 地址DS,偏侈地址SI所指的内存单元。
例:DS=1000H,SI=0010H,那么所指地址是1000H 段的第0010H号单元
3、MOV DX,WORD PTR [BX],将当前段,BX指出的内存单元,按字的大小赋 值给DX。
4、JC是运用在跳转中的
汇编中OF和CF的判断原则是:分别将数当成有符号和无符号的数进行 计算
例:0010-1001=1001
对于这个计算式判断OF和CF,判断OF,数为有符号。因为计算结果 1001(符号位1)相对于被减数0100(符号位0)改变,所以溢 出,OF为1
判断CF比较简单,只用看有没有向上一位借位即可,如此题,进行减操作时0010向上借了一位,故有借位,CF为1。同理,加就看有没有向上一位进位,有为1。
其实CF判断很容易,难的是OF。除了所说的,还有特例。但你只要求CF,我也不在这细说了。呵呵,不过一楼说的挺好,这都是汇编里的基本问题,全还给老师了。
不知道这样说你能明白吗?
热心网友
时间:2024-03-10 03:32
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帮你解答.
热心网友
时间:2024-03-10 03:33
第一题,2-9=-7负数用补码形式表示就是7二进制是0111按位取反是1000再加1等于1001
0-3=-3,同理所以等于1101
第二题, 举个例子ds相当于上海,si相当于你家的地址,ds:[si]就相当于在上海的你家里找你!
第三题,不想多罗嗦了!mov就是移动嘛!把[bx]的内容放到dx里嘛!word ptr就是指明传过去的空间大小!形象点就好像你总不能把大象关进老鼠笼子里吧!肯定要找个大小差不多的!这样word ptr 就相当于把笼子的尺寸规定好![bx]是隐含寻址其实就是ds:[bx]<--这个应该明白了吧!:)
第四题,判断c标志?你书上没写??指令就是jc jnc 其他的写法不同效果一样,机器码一样!
知道c标志是什么标志伐??进位标志哦!!
热心网友
时间:2024-03-10 03:34
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。