汇编网首页登录博客注册
zhangzl419的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新留言
好友圈
文章收藏
友情链接

[2009-08-06 20:06] 第三章和第四章检测题

检测点3.1

(1)在debug中,用“d 0:0 1f” 查看内存,结果如下:

0000:0000  70 80 F0 30 EF 60 30 E2-00 80 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
mov ds,ax
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
mov al,bl                 AX=000CH

(2)内存中的情况如图3.6所示。
各寄存器的初始值:CS=2000H,IP=0,DS=1000H,AX=0,BX=0;
<1>写出CPU执行的指令序列(用汇编指令写出)。
<2>写出CPU执行每条指令后,CS、IP和相关寄存器中的数值。
<3>再次体会:程序和数据有区别吗?如何确定内存中的信息哪些是数据,哪些是程序?

答:<1><2>
   指令的执行顺序及每条指令执行后CS、IP和相关寄存器的值:
   mov ax,6622H       CS=2000H,IP=0003H,AX=6622H
   jmp 0ff0:0100      CS=0FF0H,IP=0100H
   mov ax,2000H       CS=0FF0H,IP=0103H,AX=2000H
   mov ds,ax          CS=0FF0H,IP=0105H,DS=2000H
   mov ax,[0008]      CS=0FF0H,IP=0108H,AX=C389H
   mov ax,[0002]      CS=0FF0H,IP=010BH,AX=EA66H
  <3>指令和数据没有区别,程序中CS:IP指向的单元的信息被当成程序,而DS和偏移地址执行的单元就被当成数据。


检测点3.2

(1)补全下面的程序,使其可以将10000H~1000FH中的8个字,逆序复制到20000H~2000FH中。逆序复制的含义如图3.17所示(图中内存里的数据均为假设)。

应补部分为:
mov ax,2000H
mov ss,ax
mov sp,0010H

(2)补全下面的程序,使其可以将10000H~1000FH中的8个字,逆序复制到20000H~2000FH中。

应补部分为:
mov ax,1000H
mov ss,ax
mov sp,0000H


第三章 实验任务

(1)使用debug,将下面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。

mov ax,ffffH
mov ds,ax

mov ax,2200H
mov ss,ax

mov sp,0100H

mov ax,[0]                ;ax=5BEAH
add ax,[2]                ;ax=5CCAH
mov bx,[4]                ;bx=30F0H
add bx,[6]                ;bx=6024H

push ax                   ;sp=00FEH;修改的内存单元的地址是2200:00FE内容为0000H
push bx                   ;sp=00FCH;修改的内存单元的地址是2200:00FC内容为0000H
pop ax                    ;sp=00FEH;ax=6024H
pop bx                    ;sp=0100H;ax=5CCAH


push [4]                  ;sp=00FEH;修改的内存单元的地址是2200:00FE内容为0000H
push [6]                  ;sp=00FCH;修改的内存单元的地址是2200:00FC内容为0000H

(2)仔细观察图3.19中的实验过程,然后分析:为什么2000:0~2000:F中的内容会发生改变?
答:因为T命令利用了单步中断,中断时要保存现场和断点地址到栈中。
图中栈顶为2000:0010,这样中断时就将中断现场和断点地址CS:IP进栈,从图中可以找到0B39H、0108H即为CS、IP的值。


第四章  实验任务

(1)将下面的程序保存为t1.masm文件,将其生成可执行文件t1.exe。
(2)用debug跟踪t1.exe的执行过程,写出每一步执行后,相关寄存器中的内容和栈顶的内容。
(3)PSP的头两个字节是CD 20,用Debug加载t1.exe,查看PSP的内容。

实验:
assume         cs:codesg

codesg        segment
        mov ax,2000H       ;AX=2000H
        mov ss,ax          ;SS=2000H
         mov sp,0           ;SP=0000H
        add sp,10          ;SP=0010H
        pop ax             ;AX=0E24H     
        pop bx             ;BX=3206H
        push ax            ;SS:SP=2000:000C=0E24H
        push bx            ;SS:SP=2000:000A=3206H
        pop ax             ;AX=3206H
        pop bx             ;BX=0E24H
        
        mov ax,4C00H       ;AX=4C00H
        int 21H
codesg         ends

end

PSP的内容:
-d ds:0 100
1448:0000  CD 20 FF 9F 00 9A F0 FE-1D F0 4F 03 36 0E 8A 03   
1448:0010  36 0E 17 03 36 0E 25 0E-FF FF FF FF FF FF FF FF   
1448:0020  FF FF FF FF FF FF FF FF-FF FF FF FF E3 13 F6 FF
1448:0030  00 20 14 00 18 00 48 14-FF FF FF FF 00 00 00 00
1448:0040  05 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
1448:0050  CD 21 CB 00 00 00 00 00-00 00 00 00 00 20 20 20
1448:0060  20 20 20 20 20 20 20 20-00 00 00 00 00 20 20 20
1448:0070  20 20 20 20 20 20 20 20-00 00 00 00 00 00 00 00
1448:0080  00 0D 74 31 2E 65 78 65-0D 42 4C 41 53 54 45 52
1448:0090  3D 41 30 0D 64 64 72 65-73 73 2E 20 20 46 6F 72
1448:00A0  20 65 78 61 6D 70 6C 65-3A 0D 20 6F 6E 20 4E 54
1448:00B0  56 44 4D 2C 20 73 70 65-63 69 66 79 20 61 6E 20
1448:00C0  69 6E 76 61 6C 69 64 0D-20 6F 6E 6C 79 2E 0D 00
1448:00D0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
1448:00E0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
1448:00F0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
1448:0100  B8
评论次数(1)  |  浏览次数(788)  |  类型(汇编作业) |  收藏此文  | 

[  游客   发表于  2009-08-07 18:47  ]

连中断都理解到了,看来博主很用心。
中断除了保存cs,ip外还有标志寄存器。

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码