📄 打印字符.txt
字号:
dataSeg segment
welcome db 'Chars Printing By Liu', 13, 10
db 'Enter chars here:', 13, 10, '$'
chars80 db 'You have entered 80 chars. Press <Enter> to print them or any other key to abort.', 13, 10, '$'
print db 'Printing...$'
printed db ' Done$'
aborted db 'Aborted.$'
buffer db 80 dup (0)
count equ $-buffer
crlf db 13, 10, '$'
dataSeg ends
staSeg segment stack
db 100 dup (0)
staSeg ends
; 宏
showStr macro string
mov dx, offset string
mov ah, 9
int 21h
endm
codeSeg segment
main proc
assume cs:codeSeg, ds:dataSeg, ss:staSeg
start:
mov ax, dataSeg
mov ds, ax
showStr welcome
mov cx, count
mov bx, offset buffer
loopS:
mov ah, 1
int 21h
mov [bx], al
inc bx
loop loopS
showStr chars80
mov ah, 0
int 16h ; 读取键盘字符
cmp ah, 1ch ; 比较是否为 Enter 键
; DEBUG - 如果没有打印机而使用代码 (1),会提示:
; Write fault error writing device PRN
; Abort, Retry, Ignore, Fail?
; 为正常运行,可以使用代码 (2),按任意键都放弃打印。
jnz abr ; (1) 若不是,跳转到abr
; jmp abr ; (2) 跳转到abr
prn:
showStr print
mov cx, count
mov bx, 0
next:
mov ah, 5 ; 使用打印功能
mov dl, buffer[bx] ; 要打印的字符
int 21h ; 调用DOS
inc bx
loop next
mov ah, 5
mov dl, 0dh
int 21h
mov ah, 5
mov dl, 0ah
int 21h
showStr printed
jmp exit
abr:
showStr aborted
exit:
showStr crlf
mov ax, 4c00h
int 21h
main endp
codeSeg ends
end main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -