VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1085|回复: 4

今天看书有几个问题没懂``来请教``

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-2-3 16:00:02 | 显示全部楼层 |阅读模式
1。书上说,双操作数的指令(比如mov)必有一个寄存器操作数,但是书上又说可以用立即数对存储器附值。mov mem,imm;两个操作数都不是寄存器啊?
2。+0,-0的八位机器数:原码分别是:00000000,10000000
反码是:00000000,11111111这个我能理解,负数的补码不是反码除符号位以外的取反加一吗?那么-0应该是:110000000(一共9位根本不能用八为机器数表示)啊。为什么书上说 -0 的补码是00000000(8位)呢?还有-128的反码是101111111(因为是9位所以8位机器码不能表示-128的反码),那么补码就改是反码加一等于
11000000(同样是9位啊)为什么书上是等于10000000(8位)。
3。mov ax,[ax,bx]
上面那条指令对源操作数是什么寻址方式?
4。常量占内存吗?
5.mov al,c0h
  add al,al
执行上面的语句后al=80h  但是c0h+c0h本该等于180h
那么对于标志位的影响是按80h来影响还是180h ??
回复

使用道具 举报

0

主题

15

帖子

13.00

积分

新手上路

Rank: 1

积分
13.00
发表于 2020-3-21 17:30:01 | 显示全部楼层
第一题没有抵触啊!规定是两个操作数不能都为内存变量,但立即数不是内存变量啊。
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-3-21 22:00:01 | 显示全部楼层
xsteel  


   第一题没有抵触啊!规定是两个操作数不能都为内存变量,但立即数不是内存变量啊。

=============================================
不是要求必有一个为寄存器操作数吗??他两个操作数都不是寄存器啊~~


其他问题呢??
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-3-29 12:45:01 | 显示全部楼层
1。书上说,双操作数的指令(比如mov)必有一个寄存器操作数,但是书上又说可以用立即数对存储器附值。mov mem,imm;两个操作数都不是寄存器啊?

关于这个问题,你查一下帮助文档看一下关于MOV指令的说明就知道了.

5.mov al,c0h
  add al,al
执行上面的语句后al=80h  但是c0h+c0h本该等于180h
那么对于标志位的影响是按80h来影响还是180h ??

AL指的是低八位,AX等于180h

回复

使用道具 举报

2

主题

18

帖子

15.00

积分

新手上路

Rank: 1

积分
15.00
发表于 2020-3-31 00:15:01 | 显示全部楼层
>1。书上说,双操作数的指令(比如mov)“必有”一个“寄存器”操作数,但是书上又说可以用立即数对存储器附值。mov mem,imm;两个操作数都不是寄存器啊?

第一句应改为:书上说,双操作数的指令(比如mov)“至多”有一个“段寄存器”操作数。没有也是可以的。所以mov mem,imm;没问题。

>2。+0,-0的八位机器数:原码分别是:00000000,10000000
反码是:00000000,11111111这个我能理解,负数的补码不是反码除符号位以外的取反加一吗?那么-0应该是:110000000(一共9位根本不能用八为机器数表示)啊。为什么书上说 -0 的补码是00000000(8位)呢?还有-128的反码是101111111(因为是9位所以8位机器码不能表示-128的反码),那么补码就改是反码加一等于
11000000(同样是9位啊)为什么书上是等于10000000(8位)。

0没有正负之分,如果硬要分应该归为正数的范围,就是说0的原码补码都是:00000000.
128表示为9位二进制数是:1 0000 0000,所以8位能表示的最大正数是1111 1111,-128取反时是对128的二进制数:1 0000 0000取反,得:0 1111 1111。取8位即1111 1111,1111 1111 + 1=1 0000 0000.8位补码即取1 0000 0000的低八位,也就是0000 0000

>3。mov ax,[ax,bx]
上面那条指令对源操作数是什么寻址方式?
如果是用MASM,意思是用AX,BX两个寄存器的值的和作为内存操作数的地址,将这个内存地址内的值付给AX。属于特殊的寄存器间接寻址,也可以叫做变址寻址。

>4。常量占内存吗?
不占用。

>5.mov al,c0h
  add al,al
执行上面的语句后al=80h  但是c0h+c0h本该等于180h
那么对于标志位的影响是按80h来影响还是180h ??
1010 0000
+1010 0000
----------
J 0100 0000
"J"表示第八位向第九位产生的进位,ADD AL,AL后,AL=0100 0000b,即80H。运算产生的结果以及进位都对标志寄存器产生影响,所以对标志位产生影响的是180h。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表