一昨登、實(shí)驗(yàn)?zāi)康?/b>
學(xué)習(xí)用匯編語言設(shè)計與編寫循環(huán)程序
二盏混、實(shí)驗(yàn)要求
按15行X16列的表格形式顯示ASCII碼為10H一100H的所有字符峰搪,即以行為主的順序及ASCII碼遞增的次序依次顯示對應(yīng)的字符愕难。每16個字符為一行嵌洼,每行中的相鄰兩個字符之間用空白符(ASCII為0)隔開。
三祝沸、實(shí)驗(yàn)提示
(1)顯示每個字符可使用功能號為 02 的顯示 ? 輸出功能調(diào)用矮烹,使用方法如下:
mov ah,02h ?
???mov dl, ? ? ? ? ? ?輸出字符的 ASCII 碼????
? int 21h
(2)顯示空白符時,用其 ASCII 碼 0 置入 dl 寄存器罩锐。每行結(jié)束時奉狈,用顯示回車(ASCII為 0dh)和換行符(ASCII為 0ah)來結(jié)束本行并開始下一行。
(3)由于逐個顯示相繼的 ASCII 字符時涩惑,需要保存并不斷修改 dl 寄存器的內(nèi)容仁期,而顯示空白、回車、換行符時也需要使用dl寄存器跛蛋,為此可使用堆棧來保存相繼的ASCII字符熬的。具體用法是:在顯示空包或回車、換行符前用指令
Push dx
把 dl 的內(nèi)容保存到堆棧中去赊级。在顯示空白或回車押框、換行符后用指令
Pop dx
恢復(fù)dl 寄存器的原始內(nèi)容。
四此衅、實(shí)驗(yàn)程序
prognamsegment
main?? proc??far
assume cs:prognam
start:
mov??ah, 02h
mov??dl, 10h 强戴;設(shè)置初始輸出為ASCII的10h
mov??bl, 15 亭螟;輸出顯示為15行
e:
mov??cx, 16挡鞍;設(shè)置循環(huán)次數(shù)梅掠,16艇挨,表示輸出顯示為16列
l:
int??21h ;顯示輸出
push? dx 陪捷;推入堆棧
mov??ah, 02h
mov??dl, 0
int??21h
mov??ah, 02h
mov??dl, 0
int??21h 扁掸;顯示空白符
pop??dx 翘县;將棧頂元素推出
inc??dl ;設(shè)置下一個元素
loop?l 谴分;循環(huán)輸出每行的16個ASCII元素
push?dx 锈麸;將下一行的首元素推入堆棧
mov??ah, 02h
mov??dl, 0dh
int??21h
mov??ah, 02h
mov??dl, 0ah
int??21h ;輸出換行
pop??dx 牺蹄;將棧頂元素推出
dec??bl
cmp??bl, 0 忘伞;比較確定是否已經(jīng)輸出15行元素
jne??e ;若還未完成輸出沙兰,則跳轉(zhuǎn)至e氓奈,繼續(xù)進(jìn)行下一行元素的輸出
je???exit ;否則退出程序
exit:
mov??ax, 4c00h
int??21h
main???? endp
prognam? ends
end??start
五鼎天、調(diào)試結(jié)果