《組合語言》王爽 乙個奇怪的程式之EBF6

2021-06-19 00:05:51 字數 892 閱讀 1803

參照和注釋吧

assume cs:codesg

codesg segment

mov ax,4c00h

int 21h

start: mov ax,0 //程式入口點

s: nop //這個位置的內容稍後被替換了(當這裡第二次執行時,就是那句ebf6了)

nop //這個位置的內容稍後被替換了(當這裡第二次執行時,就是那句ebf6了。

//先往下走一步至1419:000a,然後jmp,往前跳10個位元組,走到了1419:00

// 00)

mov di,offset s //di=0008h

mov si,offset s2 //si=0020h

mov ax,cs:[si] //s2處的指令(ebf6)拿過來了,複製給ax.

mov cs:[di],ax //ax再傳給cs:[8],即s處被改動,上圖中1419:0020處的ebf6被復

//製到了s處(1419:0008),ebf6是兩個位元組大小,正好把

//1419:0008、1419:0009都填滿了

s0:jmp short s //馬上調回到s處

s1:mov ax,0 //此處以下沒有被執行到

int 21h

mov ax,0

s2:jmp short s1 //這裡最初已經計算出了s2和s1之間的距離,

//18h - 20h = -10(十進位制)= f6(十六進製制補碼的)

nop

codesg ends

end start

王爽組合語言 乙個奇怪的程式

先大概分析分析 程式從 start mov ax,0 開始執行,執行到s0時,已經將s處替換成了s2處的 jmp short s1.而程式編譯後,s2處的彙編語句 jmp short s1對應的機器碼是 ebf6 f6即 10的補碼 也就是說,此刻s處對應機器碼是ebf6。然後執行s0 jmp sh...

組合語言 《組合語言》王爽 實驗一

從 1000 0 開始寫入命令 a 1000 0 mov ax,4e20 add ax,1416 mov bx,2000 add ax,bx mov bx,ax add ax,bx mov ax,001a mov bx,0026 add al,bl add ah,bl add bh,al mov a...

王爽《組合語言》課程設計一

assume cs code,ds data buf segment db 0a0h dup 0 buf ends data segment db 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 db 1985 1986 1987 1988 198...