問題 3.7
程式設計, 將 10000H ~ 1000FH 做為連本帶利,初始狀態是空的,將AX,BX,DS 中的資料入棧。
# 初始化SS, SP ss=1000H [sp]=[0010] , 則 [ssss:sp] = [1000H:0010H]
mov ax,1000
mov ss,ax
# sp是指標,不是段暫存器,可以直接傳資料,不用ax中轉
mov sp,0010
push ax
push bx
push ds
問題 3.8
程式設計:
將 10000H ~ 1000FH 當做棧, 初始狀態棧是空的
設定 ax=001aH, bx=001bH
ax,bx 資料入棧
ax,bx 清零
從棧中恢復 ax,bx 的值
mov ax,1000H
mov ss,ax
mov sp,0010H
mov ax,001a
mov bx,001b
push ax
push bx
# 將 ax 清零也可以用 sub ax,ax 機器碼為 兩個位元組, mov ax,0 機器碼為 3個位元組
mov ax,0
mov bx,0
# 先進後出,先出棧的是 bx, 後出棧的是 ax
pop bx
pop ax
問題 3.9
程式設計
將 10000H ~ 1000FH 儲存空間當作棧,初始為空
設定 AX=002AH, BX=002BH
利用棧,交換 AX,BX中的資料
mov ax,1000H
mov ss,ax
mov sp,0010H
mov ax,002a
mov bx,002b
push ax
push bx
pop ax
pop bx
問題 3.10
如果要在 10000H 處 寫入字型資料 2266H, 可以用下的程式碼
mov ax,1000H
mov ds,ax
mov ax,2266H
mov [0],ax
補全下面的程式碼,使它完成同樣的功能,在 10000H處寫入字型資料 2266H. 要求不使用 mov 記憶體單元,暫存器
mov ax,1000H
mov ds,ax
mov sp,0002H
mov ax,2266H
# 使用棧,SP-1 [1000:1]->22H SP-1 [1000:0]->66H , SP最終為 0000H
push ax