axix005 发表于 2015-7-31 05:42:43

新人求教。。检测点3.1

本帖最后由 axix005 于 2015-7-31 09:11 编辑




---------------------------------

cs= 2000h ,ip=0, ds=1000h,ax=0 ,bx=0;
写出cpu执行的指令序列 汇编指令

写出CPU执行每条指令后,CS。IP和相关寄存器中的数值。

3体会,数据和程序有区别吗?如何确定内存中的信息哪些是数据,哪些是程序

mov ax,6622      CS=2000hip=0003ds=1000ax=6622 bx=0

jmp 0ff0:0100   CS=1000 ip=0   ds=1000   ax=6622bx=0

mov ax,2000h    cs=1000ip=3 ds=1000   ax=2000   bx=0

mov ds,ax      cs=1000ip=5ds=2000ax=2000bx=0

mov ax,cs=1000ip=8ds=2000   ax=0089   bx=0

mov ax,cs=1000ip=B   ds=2000 ax=0066bx=0

为什么mov ax,mov ax,   和网上答案不一样?

图片要的不是0008和0002吗,为什么是整个c389和6622了

鱼子卿 发表于 2015-7-31 08:31:25

数据和代码存在内存中是一样的,他们的性质是一样的,都是10101011的二进制代码。你给cpu说它是数据,那么cpu就把它当数据,反之就是代码命令。代码也可以当数据,但是没意义。我只能帮到这里了,我也不是很懂

jmuxiaolu 发表于 2015-7-31 12:47:17

你没发现ds=2000,而mov ax,,在没有段前缀的情况下,CPU在取数据的时候都是使用默认的段前缀。也就是说,数据段使用的是数据段寄存器ds,上面指令等价于mov ax,ds:.所以取得是C389

chenkun 发表于 2015-7-31 16:29:03

{:1_1:}{:1_1:}{:1_1:}{:1_1:}

fast 发表于 2015-7-31 16:31:13

数据和程序要看你自己怎么定义了,你要他是程序就是程序,要他是数据他就是数据,都是二进制的代码,以线性存储
ds=2000,而mov ax,,在没有段前缀的情况下,CPU在取数据的时候都是使用默认的段前缀。也就是说,数据段使用的是数据段寄存器ds,上面指令等价于mov ax,ds:.所以取得是C389

axix005 发表于 2015-7-31 20:38:38

本帖最后由 axix005 于 2015-7-31 20:43 编辑

jmuxiaolu 发表于 2015-7-31 12:47
你没发现ds=2000,而mov ax,,在没有段前缀的情况下,CPU在取数据的时候都是使用默认的段前缀。也就是 ...

也就是内存段不能不要C3只单独提取20008这个单个单元字节89吗?

axix005 发表于 2015-8-2 03:46:13

本帖最后由 axix005 于 2015-8-2 19:15 编辑

结贴,明白了,学到第5章讲解()才明白ax一定等于字,,,细到高低位才是求字节

哈哈,今天看视频才知道3.0就讲到了,,,,我都是先看书后看视频- -!~~

不二如是 发表于 2020-4-7 08:54:29

你没发现ds=2000,而mov ax,,在没有段前缀的情况下,CPU在取数据的时候都是使用默认的段前缀。也就是说,数据段使用的是数据段寄存器ds,上面指令等价于mov ax,ds:.所以取得是C389
页: [1]
查看完整版本: 新人求教。。检测点3.1