检测点9.1
(1)程序如下,如要使程序中的jmp执行后,cs:ip指向程序的第一条指令,在data段中应该定义哪些数据:
assume cs:code
data segment
dw 0,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 00 06 00......
则此时,cpu执行指令:
mov ax,2000h
mov es,ax
jmp dword ptr es:[1000h]
后,(cs)=0006h,(ip)=00beh
检测点9.2
补全程序,利用jcxz指令,实现在内存2000h段中查找第一个值为0的字节,找到后,将它的偏移地址储存在dx中。
assume cs:code
code segment
start: mov ax,2000h
mov bx,0
s: mov ch,0
mov cl,[bx]
jcxz ok
inc bx
jmp short s
ok: mov dx,bx
mov ax,4c00h
int 21h
code ends
end start
检测点9.3
补全程序,利用loop指令,实现在内存2000h段中查找第一个值为0的字节,找到后,将它的偏移地址储存在dx中。
assume cs:code
code segment
start: mov ax,2000h
mov bx,0
s: mov cl,[bx]
mov ch,0
inc cx
inc bx
loop s
ok: dec bx
mov dx,bx
mov ax,4c00h
int 21h
code ends
end start
- [nbfengyi] 图在相册 10/22 22:02
- [nbfengyi] 图片在相册里 10/21 15:43
- [chinatree] 书上有讲。 10/04 12:30
- [12345678911] 第三问的解答我不懂什么回事能解释下吗 10/04 11:45
- [chinatree] 写出来就行了,不用太纠结。 09/29 21:00
- [nbfengyi] 用了一整个下午写这个程序,一开始就想到了循环,开始想外循环必有一次,内循环有4字节和2字节的,是不要 09/29 20:20
- [nbfengyi] 开始没有注意是四个字母 09/27 20:06
- [nbfengyi] 开始时: -d ds:0 144C:0000 31 2E 20 64 69 73 70 6C- 09/27 20:06
- [chinatree] 你不要拿半成品来糊弄自己好不好?! 09/27 17:50
- [nbfengyi] 受教了, 09/24 09:59