📄 asc.asm
字号:
data segment
first db " 0 1 2 3 4 5 6 7 8 9 A B C D E F $"
col dw 17
row dw 9
asc dw ?
data ends
stack1 segment para stack
dw 20h dup(0)
stack1 ends
code segment
assume cs:code,ds:data,ss:stack1
start:
mov ax,data
mov ds,ax
mov bh,0 ; bh存放行号
mov cx,row
lop1: push cx
mov bl,0 ; bl存放列号
mov cx,col
lop2: mov al,bh ; 计算ASC码
dec al
push cx
mov cl,4
shl al,cl
pop cx
mov ah,bl
dec ah
add al,ah
cmp bh,0 ; 第1行为列编号
je rw
cmp bl,0 ; 第1列为行编号
je co
inc bl ; 列计数
cmp al,20h ; 特殊字符以空格代替
jbe spa
cmp al,7fh ; 最后DEL以空格代替
je spa
mov dl,al ;输出字符asc码
mov ah,02h
int 21h
mov dl,20h
mov ah,02h
int 21h
jmp fin
rw: mov dx, offset first ; 输出列号
mov ah,09h
int 21h
jmp fin2
co: mov al,bh ; 输出行号
dec al
add al,30h
mov dl,al
mov ah,02h
int 21h
mov dl,20h
mov ah,02h
int 21h
inc bl ; 列计数
jmp fin
spa: mov dl,20h ; 输出空格
mov ah,02h
int 21h
mov dl,20h
mov ah,02h
int 21h
fin: loop lop2
fin2: pop cx
inc bh ; 行计数
mov dl, 0dh ; 换行
mov ah,02h
int 21h
mov dl, 0ah
mov ah,02h
int 21h
loop lop1
mov ah,4ch
int 21h
code ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -