📄 asc_show_asm.asm
字号:
;***************************************
code SEGMENT ;02
ASSUME CS:code,DS:code
ORG 100h ;04
;05
;---------------------------------------
start: SUB BX,BX ;07 使 BX 等于零
;08
next: MOV DL,BL ;09 此行及以下 3 行印出 BL 内容的
MOV CL,4 ;10 较高的四个位元
SHR DL,CL ;11
CALL print ;12
MOV DL,BL ;13 此行及以下 2 行印出 BL 内容的
AND DL,0fh ;14 较低的四个位元
CALL print ;15
;16
MOV AH,2 ;17 此行及以下两行印出空白
MOV DL,' ' ;18
INT 21h ;19
MOV DL,BL ;20 此行及以下两行印出 BL 所代表的
INT 21h ;21 ASCII 字元
CALL cr_lf ;22 印出归位及换行字元
;23
INC BL ;24 使 BL 为下一个 ASCII 字元
MOV CH,20 ;25 设定除数
MOV AX,BX ;26 设定被除数
DIV CH ;27
OR AH,AH ;28 若余数为零,表示已经显示 20 个字了
JNZ remain ;29
INT 16h ;30 所以应该等使用者按下任意键再继续
;31
remain: CMP BL,0 ;32 如果 BL=0,表示已经完成 256 个字了
JNE next ;33
mov ah,01h
int 21h
MOV AX,4c00h
INT 21h
;---------------------------------------
;print 副程式
;输入:DL-由 0 到 F 的十六进位数
;输出:在萤幕上印出 DL 内的 ASCII 码
print PROC NEAR
ADD DL,30h ;加上 30H
CMP DL,'9' ;比较看看是否超过 39H
JBE ok ;没超过直接印出
ADD DL,7 ;若超过再加上 7
ok: MOV AH,2
INT 21h ;印出
RET
print ENDP
;---------------------------------------
cr_lf PROC NEAR
MOV AH,2
MOV DL,0dh
INT 21h
MOV DL,0ah
INT 21h
RET
cr_lf ENDP
;---------------------------------------
code ENDS
;***************************************
END start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -