(第三章 11)克勤克俭用内存——DispStr函数显示字符串

本文介绍了一种在保护模式下显示字符串的方法,使用了自定义的DispStr过程。该过程通过将字符串从内存加载到寄存器并逐字符地显示在屏幕上实现。文章详细展示了如何设置显示位置以及处理特殊字符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DispStr调用方法:
[SECTION .data1]
[BITS 32]
...
_szPMMessage: db "In Protect Mode now. ^-^",0Ah,0Ah,0 ;保护模式显示
szPMMessage equ _szPMMessage - $$
push szPMMessage
call DispStr
add esp, 4

DispStr实现:

DispStr:
push ebp
mov ebp, esp ;-->esp中放的是TopOfStack指针,指向栈顶(高地址)
push ebx
push esi
push edi

mov esi, [ebp+8]
mov edi, [dwDispPos]
;_dwDispPos: dd (80 * 6 + 0) * 2; 屏幕第6行, 第0列,是屏幕上下一个显示的位置
;dwDispPos equ _dwDispPos - $$
mov ah, 0Fh

.1:
lodsb ;lodsb-->将esi中的一个字节放到AL中
test al, al
jz .2 -->不是结束字符0
cmp al, 0Ah;
jnz .3 -->是“非回车的字符”
;是“回车”的时候
... ;作回车需要的相应处理
.3:
mov [gs:edi], ax
add edi, 2
jmp .1
.2:
mov [dwDispPos], edi

pop edi
pop esi
pop ebx
pop ebp
ret
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值