王爽 組合語言 第九章 實驗八

2021-10-08 11:42:38 字數 844 閱讀 1234

輸入程式

assume cs:codesg

codesg segment

mov ax,4c00h

int 21h

start: mov ax,0

s: nop

nopmov di,offset s

mov si,offset s2

mov ax,cs:[si]

mov cs:[di],ax

s0: jmp short s

s1: mov ax,0

int 21h

mov ax,0

s2: jmp short s1

nopcodesg ends

end start

首先分析一下程式,s段的內容是將s2開頭的四個位元組指令複製到了s的開頭,我們檢視一下

可以看到s開頭部分的四個位元組此時是空的,而s2開頭的四個位元組e8f6對應指令 jmp 18

現在我們執行一下程式,先把s段執行完

此時,s開頭部分雖然被替換成了e8f6,但是我們可以看到兩個e8f6卻跳轉到了不同的位置,事實上e8f6表示向前跳轉8個位元組,s的ip位置為8,向前8個位元組正好是程式開頭的表示程式執行結束的語句,所以該程式可以正常執行。

王爽 組合語言 第九章實驗9

用單迴圈實現的.assume cs codesg,ds datasg datasg segment db welcome to masm db 02h,02h,02h,02h,02h,02h,02h,02h,42h,42h,42h,71h,71h,71h,71h,71h datasg ends co...

王爽《組合語言》第九章實驗9

這個實驗的內容不是太麻煩,雙層的迴圈 前幾章有示例 實驗9內容如下 我的 如下 assume cs codesg,ds datasg datasg segment dw 0 儲存外層的迴圈次數 db 2h 綠色字 db 24h 綠底紅字 db 80h 白底藍字 db 0c2h 紅底綠字 db wel...

組合語言 第九章 實驗

可以正常執行。分析,前面的程式都很簡單,沒啥問題,到了 mov ax,cs si mov cs di ax 這裡,由於s2處的jmp short s1指令jmp機器碼為eb,之後記錄的是跳轉的距離,這裡向上跳到s1處,所以jmp short s1只佔2個位元組,所以jmp short s1處的 就被...