王爽老師的匯編語言的實驗6代碼如下:
;將datasg段中的每個單詞的前4個字母改為大寫字母
assume cs:codesg,ss:stacksg,ds:datasg
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
datasg ends
codesg segment
start: mov ax,stacksg
mov ss,ax ;指向堆疊段ss
mov sp,16 ;指向堆疊頂
mov ax,datasg
mov ds,ax ;指向ds
mov bx,0
mov cx,4 ;將行數設定為4
s0: push cx ;先將行數cx值保存在堆疊中
mov si,0 ;將si置0
mov cx,4 ;cx設定為內層回圈的次數,列數設定為4
;先進行列掃描
s: mov al,[bx+si].3 ;將源地址送到al中進行轉換
and al,11011111b ;轉換成大寫
mov [bx+si].3,al ;轉換后放到原來的位置
inc si
loop s
add bx,16 ;bx指向堆疊頂
pop cx ;從堆疊中恢復cx值
loop s0 ;用外層回圈的loop指令將cx中的計數值減1
mov ax,4c00h
int 21h
codesg ends
end start
使用DOSBOX除錯,使用t執行,先查看076a:0 1f的記憶體,如下:

然后按t執行下面三行
mov ax,stacksg
mov ss,ax ;指向堆疊段ss
mov sp,16 ;指向堆疊頂
再查看記憶體076a,如下


請教下:01 A3 07 6A 00 08 00 00 07 6A代表什么?怎么會出現在堆疊中,因為還沒有進行操作,只是程式指向堆疊中
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/242578.html
標籤:驅動開發/核心開發
