目录:
空山新雨后:汇编语言学习笔记(目录)zhuanlan.zhihu.com题目:
1、按15行×16列的表格形式显示ASCII码为10H-100H的所有字符,即以行为主的顺序将ASCII码递增的顺序依次显示对应的字符。
2、每16个字符为一行,字符之间以空白符隔开。
代码:
datas segment
newline db 0ah, 0dh, '$'
space db ' ', '$'
datas ends
stacks segment
db 128 dup(?)
stacks ends
codes segment
assume cs:codes,ds:datas,ss:stacks
start:
mov ax, datas
mov ds, ax
xor dx, dx ;清空dx寄存器
mov dl, 10h
loop1:
mov cx, 10h
loop2:
mov ah, 02h
int 21h
inc dx
push dx
mov dx, offset space
mov ah, 09h
int 21h
pop dx
loop loop2
push dx
mov dx, offset newLine
mov ah, 09h
int 21h
pop dx
cmp dx, 0ffh
jbe loop1
mov ah, 02h
int 21h
inc dl
mov ax, 4c00h
int 21h
codes ends
end start
因为要切换行,所以用了双重循环,内循环16次一个循环,因为正好从10h到100h是90h个字符是16的倍数,所以无需再内层循环做额外的判断。
最后就是输出换行和空白字符的时候,保存了一下dx的值,因为输出字符串的时候需要用到dx来作为寄存器。