datas segment
;此處輸入資料段**
datas ends
stacks segment
;此處輸入堆疊段**
stacks ends
codes segment
assume cs:codes,ds:datas,ss:stacks
start:
mov ax,datas
mov ds,ax
;實驗二(一):順序輸入四個數,比較大小,輸出max
mov ah,1
int 21h;呼叫一號功能單字元輸入
mov bh,al;輸入的第乙個數放到bh裡
mov ah,1
int 21h;再輸入乙個數放到al裡
cmp bh,al
ja a ;如果bh大於al,則跳轉執行下乙個數的輸入
mov bh,al;第一次比較(如果bh小於al,則把大數放於bh)
a: mov ah,1
int 21h
cmp bh,al
ja b
mov bh,al;第二次比較
b: mov ah,1
int 21h
cmp bh,al
ja d
mov bh,al;第三次比較
;輸出d: mov ah,2
mov dl,10
int 21h;回車
mov ah,2
mov dl,13
int 21h;換行
mov dl,bh
int 21h;輸出
mov ah,4ch
int 21h
codes ends
end start
datas segment
;此處輸入資料段**
datas ends
stacks segment
;此處輸入堆疊段**
stacks ends
codes segment
assume cs:codes,ds:datas,ss:stacks
start:
mov ax,datas
mov ds,ax
;實驗二(二):利用迴圈實現數字輸入和比較
mov cx,4;cx為計數器
mov bh,0;初始化
;迴圈體
f: mov ah,1
int 21h;輸入乙個數
cmp bh,al;比較
ja a
mov bh,al;交換
a: sub cx,1;減1/加1
cmp cx,0;for(i=0;i<4;i++)
je d;迴圈體
jmp f
;輸出d: mov ah,2
mov dl,10
int 21h;回車
mov ah,2
mov dl,13
int 21h;換行
mov dl,bh
int 21h;輸出
mov ah,4ch
int 21h
codes ends
end start
datas segment
;此處輸入資料段**
datas ends
stacks segment
;此處輸入堆疊段**
stacks ends
codes segment
assume cs:codes,ds:datas,ss:stacks
start:
mov ax,datas
mov ds,ax
;實驗二(三):利用loop迴圈語句實現數字的輸入和比較
mov cx,4;cx為計數器
mov bh,0;初始化
;迴圈體
f: mov ah,1
int 21h;輸入乙個數
cmp bh,al;比較
ja a
mov bh,al;交換
a: loop f;loop迴圈語句
;輸出d: mov ah,2
mov dl,10
int 21h;回車
mov ah,2
mov dl,13
int 21h;換行
mov dl,bh
int 21h;輸出
mov ah,4ch
int 21h
codes ends
end start
組合語言實驗二
預備知識 debug的使用 前面實驗中講了debug一些命令的用法,這裡再補充一些關於debug的知識。1 關於d命令 現在我們知道段位址是存放在暫存器中的,在d命令後面直接給出段位址,是debug提供的一種直觀的操作方式。d命令是由debug執行的,debug在執行d 1000 0這樣的命令時會先...
組合語言實驗二
用機器指令和彙編指令程式設計 實驗任務 一 使用 debug,將下面的程式段寫入記憶體,逐條執行,根據指令執行後實際運 況填空。在中途輸入指令的時候,錯把 add 指令輸成了 mov 指令。並且有乙個有趣的地方是,我這段指令中是有 mov sp,0100 這個指令的,但是在執行的時候這條指令並沒有顯...
組合語言 實驗二
在進行實驗之前,有個小知識點 中斷機制 debug的t命令在執行修改暫存器ss的指令時,下一條指令也緊接著被執行。實驗任務 1 敲下如下 填空與實驗結果一致。實驗任務 2 1.我們發現 2000 0 2000 f 的單元值是有變化的 那麼是什麼原因呢?2.前3行的功能是 將段暫存器ss的值設定為段位...