欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

汇编语言学习笔记01

程序员文章站 2022-06-07 08:21:02
...

汇编语言程序设计——ASCII字符按表输出

一、实验要求

按15行*16列的表格显示表示ASCII码为10H—100H的所有字符,即以行为主的顺序及ASCII码递增的次序一次显示对应的字符。每16个字符为一行,每行中的相邻的字符之间用空白(ASCII码为0)隔开。

二、实验思路

  1. 采用以行为主的顺序及ASCII码递增的次序依次显示对应的字符。每16个字符为一行,每行中的相邻两个字符之间用空白符(ASCII为0)隔开。
  2. 显示每个字符可使用功能号为02的显示输出功能调用。把dl初始化为10H,然后不断使其加1(用INC指令)以取得下一个字符的ASCLL码。
  3. 显示空白符时和换行时可编写相应的子程序,用其ASCLL码0置入dl寄存器。每行结束时,用显示回车(ASCLL为0dh)和换行符(ASCLL为0ah)来结束本行并开始下一行。
    汇编语言学习笔记01

三、实验代码

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

四、代码运行结果

汇编语言学习笔记01
【注意】因为集成环境的差异和在x64位机上运行32位汇编的原因,部分ASCII码所代表的字符不能显示出来,代码本身没有问题。