(1)若要使程式中的jmp指令執行後,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 [b+1]指令後,會將data段[bx+1]中的資料賦值給ip,題目要求指向程式中的第一條指令,因此ip需等於0,所以只需data[1]中的資料為0即可。
答案:db 8 dup(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指令後,跳到第一條指令(將ip置為0),jmp dword ptr ds:[0]指令執行完,會從ds:[0]開始,取出兩個字的資料,把前面兩個位元組的資料賦值給ip,後面兩個位元組的資料賦值給cs,所以要將data[0]存放0,data[2]存放cs。
答案:bx cs
(3)用debug檢視記憶體,結果如下:
2000:1000 be 00 06 00 00 00 ……
此時cpu執行指令
mov ax, 2000h
mov es, ax
jmp dword ptr es:[1000h]
後,(cs) = ? (ip) = ?
因 jmp dword ptr es:[1000h] 的功能是將從es:10000h開始的兩個字(四個位元組),前面的兩個位元組賦值給ip,後面兩個賦值給cs。
則該程式執行後cs= 0060,ip=00be
王爽組合語言 檢測點9 1
1 程式如下 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指令執行後,cs...
《組合語言》(王爽)檢測點1 1
1.乙個cpu的定址能力為8kb,那麼他的位址匯流排寬度為13。2 n 1024 8 n為匯流排寬度。已知2 10 1024 因此n 13 2.1kb的儲存器有1024個儲存單元。儲存單元的編號從0到1023 2 10 1kb 1024 3.1kb的儲存器可以儲存 8192個bit,1024 個by...
王爽組合語言 檢測點9 3
補全程式設計,利用loop指令,實現在記憶體2000h段中查詢第乙個值為0的位元組,找到後,將它的偏移位址儲存在dx中。assume cs code code segment start mov ax,2000h mov ds,ax mov bx,0 s mov cl,bx mov ch,0 inc...