《組合語言》王爽 P88 實驗3

2021-08-16 07:23:32 字數 1628 閱讀 9622

2)debug執行t1.exe之後:

可以看出 ds = 075a; cs=076a,兩個段位址相差10h,是因為psp的256個位元組的原因;

疑惑:ds和cs的不同,有什麼用嘛?

cx=0016是t1的位元組長度,16h個位元組;

從mov ax,2000到int 21的每個指令的位元組長度為:3,2,3,3,1,1,1,1,1,1,3,2,sum之後是22個位元組,寫成16進製制就是16h (16*1+6=22).

以下為執行mov ax, 2000h

mov ss, ax

mov sp, 0

add sp, 4

很容易看出來 mov ss, ax 和 mov sp, 0000同時執行了

以下為執行pop ax

pop bx

push ax

push bx

很容易看出來 每次pop之後 sp+2; 每次push之後,sp-2, 初始為sp=0004

pop ax, 把棧頂內容存入暫存器ax,所以ax從2000程式設計0000, sp=0006

pop bx, 把棧頂內容存入暫存器bx,sp=0008

push ax, 把暫存器ax內容壓入棧頂, sp=0006

猜測一下:push bx, 把暫存器bx內容壓入棧頂, sp=0004

以下為執行pop ax

pop bx

mov ax,4c00h

int 21h

最後program terminated normally, 一切正常。

3)psp的頭兩個位元組是cd20,用debug載入t1.exe,檢視psp的內容

也就是說要檢視記憶體075a:0的內容嘛;

使用命令: -d ds:0 , 答案bingo!

組合語言(王爽)實驗十(3)

答案在最後面 有兩個答案,建議直接看第二個 div bx ax bx 商存在ax中,餘數存在dx中 add dx,30h 由題意得要 30h mov si dx 把該值存到記憶體data segment mov cx,ax jcxz k 用cx判斷是否跳出此迴圈 inc si 迴圈加一 inc cx...

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

從 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...

組合語言 王爽 實驗4

這學期在學彙編,沒怎麼自己動手程式設計過,結果到了中期編不出程式來,實在太尷尬了 特此來補各個實驗。4 11 0 200 0 20b 為什麼等同於 0020 0 0020b?0 200 0x16h 200 00200h 所以拆分成不同的形式即可轉換 assume cs code code segme...