汇编语言学习笔记01
程序员文章站
2022-06-07 08:21:02
...
汇编语言程序设计——ASCII字符按表输出
一、实验要求
按15行*16列的表格显示表示ASCII码为10H—100H的所有字符,即以行为主的顺序及ASCII码递增的次序一次显示对应的字符。每16个字符为一行,每行中的相邻的字符之间用空白(ASCII码为0)隔开。
二、实验思路
- 采用以行为主的顺序及ASCII码递增的次序依次显示对应的字符。每16个字符为一行,每行中的相邻两个字符之间用空白符(ASCII为0)隔开。
- 显示每个字符可使用功能号为02的显示输出功能调用。把dl初始化为10H,然后不断使其加1(用INC指令)以取得下一个字符的ASCLL码。
- 显示空白符时和换行时可编写相应的子程序,用其ASCLL码0置入dl寄存器。每行结束时,用显示回车(ASCLL为0dh)和换行符(ASCLL为0ah)来结束本行并开始下一行。
三、实验代码
DATAS SEGMENT
;此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
display PROC;空格输出的子程序
push ax
mov ah,02h
mov dl,0h
INT 21H
pop ax
RET
display ENDP
cr PROC;回车换行输出的子程序
push ax
mov ah,02h
mov dl,0Dh
INT 21H
mov ah,02h
mov dl,0Ah
INT 21H
POP ax
RET
cr ENDP
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
mov al,10h
mov bx,15
rota:
mov cx,16
next:
mov ah,02h
mov dl,al
INT 21H;显示字符
call display
INC AL
LOOP next;cx=cx-1,cx≠0继续循环,即打印完一行十六个字符
call cr;一行结束后回车换行
dec bx
cmp bx,0;bx控制循环行数,不为零继续输出
jnz rota
MOV AH,4CH
INT 21H
CODES ENDS
END START
四、代码运行结果
【注意】因为集成环境的差异和在x64位机上运行32位汇编的原因,部分ASCII码所代表的字符不能显示出来,代码本身没有问题。
上一篇: 二叉树的遍历(Java)
下一篇: 算法与数据结构 -- 栈与队列(三)