;試編寫一程式,要求能從鍵盤接收乙個個位數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 也就是我們...