; 用int 7ch显示字符串
assume cs:codesg
datasg segment
db "Beginner's All-purpose Symbolic Instruction Code.",0
datasg ends
codesg segment
start:
; 安装中断程序于0:200设置源地址与目的地址,并使用movsb传送
mov ax, cs
mov ds, ax
mov si, offset doPrint
mov ax, 0
mov es, ax
mov di, 200h
mov cx, offset doPrint_end - offset doPrint
cld
rep movsb
; 设置向量表
mov ax, 0
mov es, ax
mov word ptr es:[7ch*4], 200h
mov word ptr es:[7ch*4 + 2], 0
mov ax, datasg
mov ds, ax
mov si, 0
; 设置中断处理程序要处理字符串地址ds:0
mov dh, 12
mov dl, 2
mov cl, 3
int 7ch
; 调用打印函数
mov ax, 4c00h
int 21h
;dh 行号,dl 列号 cl 颜色 ,ds:si 指向首地址,遇到0返回
doPrint:
push ax
push bx
push es
push di
push si
push cx
; 计算偏移量
mov al, 160
mul dh
mov bx, ax
mov al, 2
;mov dl, 2
mul dl
add bx, ax
; 偏移量存储在bx中
mov ax, 0b800h
mov es, ax
mov di, 0
mov ah, cl
mov ch, 0
print:
mov cl, ds:[si]
jcxz backshow_str
mov al, cl
mov es:[bx + di], ax
add di, 2
inc si
jmp short print
backshow_str:
pop cx
pop si
pop di
pop es
pop bx
pop ax
iret
doPrint_end:
nop
codesg ends
end start
转载于:https://www.cnblogs.com/boota/p/3720615.html