chuanwang66 发表于 2013-2-7 09:04:02

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

DispStr调用方法:


...
_szPMMessage:db"In Protect Mode now. ^-^",0Ah,0Ah,0;保护模式显示
szPMMessageequ_szPMMessage - $$
pushszPMMessage
callDispStr
add   esp,4

DispStr实现:

DispStr:
pushebp
movebp,esp       ;-->esp中放的是TopOfStack指针,指向栈顶(高地址)
pushebx
pushesi
pushedi

movesi,
movedi,
;_dwDispPos: dd(80 * 6 + 0) * 2; 屏幕第6行, 第0列,是屏幕上下一个显示的位置
;dwDispPosequ_dwDispPos- $$
movah,0Fh

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

popedi
popesi
popebx
popebp
ret
页: [1]
查看完整版本: (第三章 11)克勤克俭用内存——DispStr函数显示字符串