汇编网首页登录博客注册
十堰职业技术学院学生211020的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

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

[2009-06-08 21:18] 检测点9.1

(1) 若要使程序中的 jmp 指令执行后, CS:IP 指向程序的第一条指令, 在 data 段中应该定义哪些数据? 
程序如下: 
assume cs:code  
data segment  
   dw 0 
data ends  

code segment  
start:  
    mov ax, data  
    mov ds, ax  
    mov bx, 0  
    jmp word ptr [bx+1]  
code ends  
end start 
(2)补全程序, 使 jmp 指令执行后, CS:IP 指向程序的第一条指令 
assume cs:code  
data segment  
    dd 12345678h  
data ends  

code segment  
start:  
    mov ax, data  
    mov ds, ax  
    mov bx, 0  
    mov [bx],bx      
    mov [bx+2],cs  
    jmp dword ptr ds:[0]  
code ends  
end start  
(3) 用 Debug 查看内存,结果如下:  
2000:1000 BE 00 06 00 00 00  
则此时,CPU执行指令:  
mov ax, 2000h  
mov es, ax  
jmp dword ptr es:[1000h]  
后,(CS)= ? ,(IP)= ?     
CS=0C7A  IP=1000 
截图如下: 

C:\>debug 
-d 2000:1000 
2000:1000  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................ 
2000:1010  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................ 
2000:1020  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................ 
2000:1030  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................ 
2000:1040  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................ 
2000:1050  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................ 
2000:1060  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................ 
2000:1070  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................ 
-e 2000:1000 
2000:1000  00.BE   00.00   00.06   00.00   00.00   00.00 
-d 2000:1000 
2000:1000  BE 00 06 00 00 00 00 00-00 00 00 00 00 00 00 00   ................ 
2000:1010  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................ 
2000:1020  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................ 
2000:1030  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................ 
2000:1040  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................ 
2000:1050  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................ 
2000:1060  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................ 
2000:1070  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................ 
-a 
0C7A:0100 mov ax,2000 
0C7A:0103 mov es,ax 
0C7A:0105 jmp dword ptr 2000:1000 
0C7A:0108 
-r 
AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000 
DS=0C7A  ES=0C7A  SS=0C7A  CS=0C7A  IP=0100   NV UP EI PL NZ NA PO NC 
0C7A:0100 B80020        MOV     AX,2000 
-t 

AX=2000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000 
DS=0C7A  ES=0C7A  SS=0C7A  CS=0C7A  IP=0103   NV UP EI PL NZ NA PO NC 
0C7A:0103 8EC0          MOV     ES,AX 
-t 

AX=2000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000 
DS=0C7A  ES=2000  SS=0C7A  CS=0C7A  IP=0105   NV UP EI PL NZ NA PO NC 
0C7A:0105 E9F80E        JMP     1000
评论次数(1)  |  浏览次数(472)  |  类型(默认类型) |  收藏此文  | 

[  mess   发表于  2009-06-09 10:09  ]

dw 0  
-------------
这里最好是dw 0,0 因为根据程序要求第1和2个字节是0.(当然,如果博主认识到dw 0,计算机会分配16个字节且默认都是0的内存给程序的话,上面答案也是对的。)

第三题答案不对,注意最后jmp指令是jmp dword ptr es:[1000h]而不是jmp 1000;

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