實驗二 分支程式實驗和迴圈程式實驗

2021-07-10 12:10:27 字數 2533 閱讀 8268

流程圖

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倒過來拼...