彙編一日一學 9 響鈴N次

2021-05-22 16:42:26 字數 1707 閱讀 6821

;試編寫一程式,要求能從鍵盤接收乙個個位數n,然後響鈴n次(響鈴的ascii碼為07)。

stacks segment

dw128dup(0)

stacks ends

codes segment

start:

input:

mov ah,1;輸入字元

int 21h

cmp al,'0'

jle input

cmp al,'9'

jginput

sub al,'0'

cbw;擴充套件al為ax

mov cx,ax;cx為響鈴次數

bell:

mov dl,07h

mov ah,2

int 21h

loop bell;loop cx-- >=0

mov ax,4c00h

int 21h

codes ends

end start

符號擴充套件指令

節擴充套件為字 cbw (convert byte to word)

指令的彙編格式:cbw

指令的基本功能:(ah)=00h 當(al)的最高有效位為0時

(ah)=ffh 當(al)的最高有效位為1時

指令對標誌位的影響:不影響標誌位

指令的特殊要求:這是條無運算元的指令,進行符號擴充套件的運算元必須存放在al暫存器或ax暫存器中。

字擴充套件為雙字 cwd (convert word to double word)

指令的彙編格式:cwd

指令的基本功能:(dx)=0000h 當(ax)的最高有效位為0時

(dx)=ffffh 當(ax)的最高有效位為1時

指令對標誌位的影響:不影響標誌位

指令的特殊要求:這是條無運算元的指令,進行符號擴充套件的運算元必須存放在al暫存器或ax暫存器中。 /

迴圈指令

迴圈 loop (loop)

指令的彙編格式:loop label

指令的基本功能:① (cx)←(cx)-1

② 若(cx)≠0,則(ip)←(ip)當前+位移量,否則迴圈結束。

指令的特殊要求:迴圈指令都是短轉移格式的指令,也就是說,位移量是用8位帶符號數來表示的,轉向位址在相對於當前ip值的-128 ~ +127位元組範圍之內。

為零/相等時迴圈 loopz/loope (loop while nonzero or equal)

指令的彙編格式:loopnz/loopne label

指令的基本功能:① (cx)←(cx)-1

② 若zf=1且(cx)≠0,則(ip)←(ip)當前+位移量,否則迴圈結束。

指令的特殊要求:迴圈指令都是短轉移格式的指令,也就是說,位移量是用8位帶符號數來表示的,轉向位址在相對於當前ip值的-128 ~ +127位元組範圍之內。

不為零/不相等時迴圈 loopnz/loopne (loop while nonzero or not equal)

指令的彙編格式:loopnz/loopne label

指令的基本功能:① (cx)←(cx)-1

② 若zf=0且(cx)≠0,則(ip)←(ip)當前+位移量,否則迴圈結束。

指令的特殊要求:迴圈指令都是短轉移格式的指令,也就是說,位移量是用8位帶符號數來表示的,轉向位址在相對於當前ip值的-128 ~ +127位元組範圍之內。 //

響鈴的ascii碼為07

我的大學 彙編一日一學

彙編基礎 1 變數及陣列的定義宣告 源文件 彙編基礎 2 21h中斷 源文件 彙編基礎 3 運算與邏輯指令 源文件 彙編基礎 4 程式控制轉移 源文件 彙編一日一學 1 hello world 源文件 彙編一日一學 2 兩個數的和 dup,堆疊段 源文件 彙編一日一學 3 呼叫呼叫彙編巨集庫程式 源...

彙編一日一學 1 Hello World

datas segment 13,10 0dh,0ah 是回車和換行符的ascii碼。回車是到本行行首,換行是到下一行當前游標位置,沿用以前的打字機設定 為字串結束標誌 string db 13,10,hello world 13,10,datas ends codes segment assume...

彙編基礎一日一學習1

暫存器是什麼?大致說暫存器是cpu的部件 一般用於資訊儲存 也可以說暫存器是我們可以進行指令讀寫的部件。我們目前80386的cpu的每個暫存器是4個位元組的。也就是32位。也可以說80386cpu有32條位址線 8個通用暫存器eax ebx ecx edx esp ebp esi edi 也就是我們...