(1)CS:IP指向程序的第一条指令,在data段中应该定义哪些数据?
程序如下:
assume cs:code
data segment
?
data ends
code segment
start:mov ax,data
mov ds,ax
mov bx,0
jmp word ptr [bx].1
code ends
end start
分析:
执行jmp word ptr [bx].1前,(IP)=bH。由题意知,执行此代码后,(IP)=0。
从而易知,可在data段中定义:dw 0,0,0。
(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],?
mov [bx+2],?
jmp dword ptr ds:[0]
code ends
end start
分析:
由jmp dword ptr ds:[0]可知,(cs)=((ds)*16+0+2),(IP)=((ds)*16+0)。
由题意易知(IP)=0,cs不变即可。因此,mov [bx],0 mov [bx+2],cs 。
(3)用Debug查看内存,结果如下:
2000:1000 BE 00 06 00 00 00 ……
则此时,CPU执行指令:
mov ax,2000H
mov es,ax
jmp dword ptr es:[1000H]
后,(cs)=0006H,(IP)=00beH 。
- [游客] 厉害,自己独立完成课设一,这本书就掌握多一半了。 10/24 16:23
- [tolearn] 嗯, 10/19 07:11
- [huang425618] 同学,检测10.5第二题你错了哦,ax的值是1哦,在 call dword ptr ss:[0]下 10/18 22:42
- [lk524849699] 这mov ax,4c00h int 21h 10/15 22:37
- [tolearn] 哪里? 10/15 22:29
- [lk524849699] 这不是有输出啊,还说不明白! 10/15 22:19
- [tolearn] 修改了一下 10/09 17:15
- [tolearn] 哦,对!谢谢提醒! 10/09 15:30
- [mess] 十六进制,别忘了写H。 10/09 15:11
- [mess] 等做了这章的实验,博主可以自己用debug验证下 ^_^ 10/09 15:10
- [tolearn] 最近学习比较紧,汇编进程就拉下来了 10/27 10:30
- [tolearn] 希望大家看完之后能够指点一二! 10/19 08:50
- [tolearn] 没人评论的日子我该怎么过…… 10/18 20:25
- [tolearn] 汇编,我已经感觉到你的强大了! 10/15 21:31
- [tolearn] 郁闷的网,检测到一半断线, 10/15 09:35
- [tolearn] 多实践,多思考,多看论坛。 牙好,胃好,身体倍棒! 10/11 20:13
- [tolearn] 汇编,值得去学习! 10/10 12:15