流程圖
code segment ;定義**段
assume cs:code ;偽指令assume將段code與段暫存器cs聯絡起來
start:
mov al,3eh ;定義程式的入口,把想要顯示的數字移入al暫存器
mov bl,al ;將al暫存在bl中,因為之後要改變ah中的內容
mov dl,al ;dl用於顯示字元
mov cl,4
;cl在位移指令中作位移次數計數器用 這裡位移次數為4
shr dl,cl ;shr指令將dl順序cl暫存器指定的位數,把低位移出
cmp dl,9
;將dl與9比較,如果小於等於9,則本身加30h即為對應的ascii 碼
jbe next1 ;如果小於等於則跳轉到next1
add dl,7
;如果大於9,本身加37h即為對應的ascii 碼
next1:
add dl,30h ;
mov ah,2
;輸出dl暫存器的字元到顯示器
int 21h ;顯示高位ascii碼
mov dl,bl ;
and dl,0fh ;將高位置零
cmp dl,9
; jbe next2 ;
add dl,7
;next2:
add dl,30h ;
mov ah,2
; int 21h ;顯示低位ascii碼
mov ah,4ch ;
int 21h ;
code ends ;返回dos
編寫乙個程式,判別鍵盤上輸入的字元;若是1-9字元,則顯示之;若為a-z或a-z字元,均顯示'c';若是回車字元(其ascii碼為0dh),則自動結束程式,若為其它字元則不顯示,迴圈等待新的字元輸入。
流程圖
;等待輸入字元
int 21h
mov bl,al
cmp bl,0dh
je s ;如果是回車則結束程式
cmp bl,'1'
jb start ;如果是其他字元則等待繼續輸入
cmp bl,'9'
jbe next2 ;如果是1-9則輸出c
cmp bl,'a'
jb start ;如果是其他字元則等待繼續輸入
cmp bl,'z'
jbe next2 ;如果是a-z則輸出c
cmp bl,'a'
jb start ;如果是其他字元則等待繼續輸入
cmp bl,'z'
jbe next2 ;如果是a-z則輸出c
jmp start ;如果是其他字元則等待繼續輸入
next2:
mov dl,63h ;顯示c
mov ah,2
int 21h
s: mov ah,4ch ;返回dos
int 21h
code ends
end start
測試
心得
發現 cmp bl,0dh 後必須要加h
在做實驗時總是犯一些語法錯誤,比如總是把cmp bl,'z'
寫成cmp 'z'
先畫好流程圖的話寫起來比較快,容易發現錯誤邏輯上的錯誤
彙編實驗 實驗二 分支迴圈結構迴圈練習
上 注釋在 中有 輸入位置號事件 do while index lth 得到相應位置上的字元 asm printf the char is c n a 特定字元數目 printf please input a char fflush stdin 重新整理標準輸入緩衝區 c getchar asm p...
彙編實驗 分支迴圈結構程式練習
一 實驗內容 試編寫程式,完成下面功能 1 程式執行時,顯示提示資訊 please input a string length 9 由使用者輸入乙個長度小於9的字串 2 然後顯示提示資訊 please input the index of the char to display 請使用者指定該串中的...
Linux Shell(二) 分支語句,迴圈語句
在linux的shell中if 語句通過關係運算子判斷表示式的真假來決定執行哪個分支 if else if expression then fi如果expression返回true,then後邊的語句將會被執行 如果返回false,不會執行任何語句。最後必須以fi來結尾閉合if,fi就是if倒過來拼...