07

(1) 在Debug中,用户”d 0:0 1F” 查看内存,结果如下。

0000:0000    70 80 F0 30 EF 60 30 E2-00 80 12 66 20 22 60
0000:0010    62 26 E6 D6 CC 2E 3C 3B-AB BA 00 00 26 06 66 88

下面的程序执行前,AX=0,BX=0,写出每条汇编指令执行后相关寄存器中的值。

mov ax,1    AX=0001H
mov ds,ax    DS=0001H    (0001:0000)指向的内存地址与(0000:0010)相同
mov ax,[0000]     AX=2662H
mov bx,[0001]     BX=E626H
mov ax,bx              AX=E626H
mov ax,[0000]    AX=2662H
mov bx,[0002]    BX=D6E6H
add ax,bx               AX=FD48H
add ax,[0004]      AX=2C14H
mov ax,0                AX=0000H
mov al,[0002]     AX=00E6H
mov bx,0               BX=0000H
mov bl,[000c]     BX=0026H
add al,bl                  BX=000CH

提示,注意DS的设置。

(2) 内存中的情况如图3.6所示。

各寄存器的初始值:CS=2000H, IP=0, DS=1000H, AX=0, BX=0;

① 写出CPU执行的指令序列(用汇编指令写出)。
② 写出CPU执行每条指令后,CS、IP和相关寄存器中的数值。
③ 再次体会:数据和程序有区别吗?如何确定内存中的信息哪些是数据,哪些是程序?

asm_3_6

图 3.6 内存情况示意图

 1. mov ax,6622H
CS=2000H, IP=0003, DS=1000H, AX=6622H, BX=0000H

2. jmp 0FF0:0100
CS=0FF0H, IP=0100H, DS=1000H, AX=6622H, BX=0000H
指令指向内存地址为 0FF0H x 10H + 0100H = 10000H

3. mov ax,2000H
CS=0FF0H, IP=0103H, DS=1000H, AX=2000H, BX=0000H

4. mov ds,ax
CS=0FF0H, IP=0105H, DS=2000H, AX=2000H, BX=0000H
数据指向内存地址为 2000H x 10H + 0000H = 20000H

5. mov ax,[0008]
CS=0FF0H, IP=0108H, DS=2000H, AX=C389H, BX=0000H

6. mov ax,[0002]
CS=0FF0H, IP=010BH, DS=2000H, AX=EA66H, BX=0000H

数据在内存中都是以二进制形式存放,CPU把CS:IP指向的内存地址当做指令执行,DS:0000指向的内存地址当做数据来调用。

<!-- JiaThis Button BEGIN --> <style type="text/css"> #ckepop a:hover { color:red; background-color:#0063DC; } </style> <div id="ckepop"> <a href="http://www.jiathis.com/share/" class="jiathis_txt" target="_blank">分享到:</a> <a class="jiathis_button_tqq">腾讯微博</a> <a class="jiathis_button_tsina">新浪微博</a> <a class="jiathis_button_qzone">QQ空间</a> <a class="jiathis_button_hi">百度空间</a> <a class="jiathis_button_kaixin001">开心网</a> <a class="jiathis_button_renren">人人网</a> <a class="jiathis_button_xiaoyou">QQ校友</a> <a href="http://www.jiathis.com/share/?uid=89488" class="jiathis jiathis_txt jtico jtico_jiathis" target="_blank">更多...</a> </div> <script type="text/javascript" src="http://v2.jiathis.com/code/jia.js?uid=89488" charset="utf-8"></script> <!-- JiaThis Button END -->

3 Responses to “王爽汇编语言(第2版)检测点3.1”

  1. 匿名 Says:

    请教,为什么 (0001:0000)指向的内存地址与(0000:0010)相同呢??非常疑惑,谢谢。

  2. 匿名 Says:

    @匿名
    (0001:0000)=0001H*10H+0000H=00010H
    (0000:0010)=0000H*10H+0010H=00010H
    (0001:0000)=(0000:0010)

  3. 匿名 Says:

    你好好想一想 段地址*16+偏移地址=物理地址
    0001:0000
    0001*16+0000=物理(0010)
    0000*16+0010=物理(0010)

Leave a Reply