汇编代码有段不太理解,高手给解释下吧

书中说这个函数的作用是模拟一个回车的显示。那个高手给详细的解释下。汇编学得不好。谢谢了DispReturn:pusheaxpushebxmoveax,edimovbl,1... 书中说这个函数的作用是模拟一个回车的显示。那个高手给详细的解释下。汇编 学得不好。谢谢了
DispReturn:
push eax
push ebx
mov eax, edi
mov bl, 160
div bl
and eax, 0FFh
inc eax
mov bl, 160
mul bl
mov edi, eax
pop ebx
pop eax

ret
展开
 我来答
SkyerTu
2010-09-27 · TA获得超过1822个赞
知道小有建树答主
回答量:552
采纳率:0%
帮助的人:1193万
展开全部
DispReturn:
push eax ; 因为后面要用到eax,这里先保存eax中原来的值
push ebx ; 因为后面要用到bl,这里先保存ebx中原来的值
mov eax, edi ; eax = edi
mov bl, 160
div bl ; al = ax / 160, ah = ax mod 160
and eax, 0FFh ; 只保留eax中后8位,即 eax = al
inc eax ; eax = eax + 1
mov bl, 160
mul bl ; ax = ax * 160
mov edi, eax ; edi = ax
pop ebx ; 恢复ebx原来的值
pop eax ; 恢复eax原来的值

ret

所以,这段程序的功能是:
计算 edi = ( edi / 160(保留最后8位)+ 1) * 160

至于为啥是模拟回车,这个可能与调用它的程序有关吧:
猜测如下:
edi是指向当前文本位置,每行有160个字符。
那么调用这个函数后,就是把指针指向了下一行的开始,相当于打了一个回车。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式