show_str:
show_str:;show a string dh=row number,dl=colum number,cl=color,ds:si point to the string
PUSH AX
PUSH BX
PUSH ES
MOV BX,0b800h
MOV ES,BX
MOV AL,DH
MOV DH,0a0h
MUL DH
MOV DH,0
ADD DL,DL
ADC DH,0
ADD AX,DX
MOV BX,AX
do:
CMP BYTE PTR DS:[SI],0
JE sret
MOV AL,DS:[SI]
MOV ES:[BX],AL
INC SI
INC BX
MOV ES:[BX],CL
INC BX
JMP do
sret:
pop es
pop bx
pop ax
RET
the step program of int 0
assume cs:code
code segment
main:
step: mov ax,cs
mov ds,ax
mov si,offset int_0
mov ax,0
mov es,ax
mov di,200h
mov cx,offset int_0_end - offset int_0
cld
rep movsb
set: mov ax,0
mov es,ax
mov word ptr es:[0],200h
mov word ptr es:[2],0h
ok: mov ax,4c00h
int 21h
int_0: jmp int_0_begin
msg: db 'efish: div overflow'
int_0_begin:
mov ax,cs
mov ds,ax
mov si,202h
mov ax,0b800h
mov es,ax
mov di,12*160+36*2
mov cx,20
do: mov al,[si]
mov es:[di],al
inc si
add di,2
loop do
mov ax,4c00h
int 21h
int_0_end:nop
code ends
end main
本文介绍了一个使用汇编语言实现的屏幕输出程序,详细展示了如何通过特定寄存器操作来定位显示位置及颜色,并逐字符地将字符串显示在屏幕上。此程序有助于理解汇编语言中底层屏幕显示的工作原理。
204

被折叠的 条评论
为什么被折叠?



