汇编实验题之用表格形式显示ASCII字符
实验题目_用表格形式显示ASCII字符SMASCII
一、实验目的
学习用汇编语言设计与编写循环程序
二、实验要求
按15行X16列的表格形式显示ASCII码为10H一100H的所有字符,即以行为主的顺序及ASCII码递增的次序依次显示对应的字符。每16个字符为一行,每行中的相邻两个字符之间用空白符(ASCII为0)隔开。
三、实验提示
(1)显示每个字符可使用功能号为 02 的显示输出功能调用,使用方法如下:
mov ah,02h mov dl,输出字符的 ASCII 码 int 21h
(2)显示空白符时,用其 ASCII 码 0 置入 dl 寄存器。每行结束时,用显示回车(ASCII为 0dh)和换行符(ASCII为 0ah)来结束本行并开始下一行。
(3)由于逐个显示相继的 ASCII 字符时,需要保存并不断修改 dl 寄存器的内容,而显示空白、回车、换行符时也需要使用dl寄存器,为此可使用堆栈来保存相继的ASCII字符。具体用法是:在显示空包或回车、换行符前用指令
Push dx
把 dl 的内容保存到堆栈中去。在显示空白或回车、换行符后用指令
Pop dx
恢复dl 寄存器的原始内容。
四、实验程序
prognamsegment
main proc far
assume cs:prognam
start:
mov ah, 02h
mov dl, 10h ;设置初始输出为ASCII的10h
mov bl, 15 ;输出显示为15行
e:
mov cx, 16;设置循环次数,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 ;设置下一个元素
loop l ;循环输出每行的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 ;比较确定是否已经输出15行元素
jne e ;若还未完成输出,则跳转至e,继续进行下一行元素的输出
je exit ;否则退出程序
exit:
mov ax, 4c00h
int 21h
main endp
prognam ends
end start
五、调试结果