loop失效的问题
刚刚开始认真学汇编,在www.aogosoft.com下载了一份《Win32汇编语言入门》V0.1汇编教程,觉得不错,现在在看,但是遇到个问题。。。
有段程序,文档中的代码如下
代码其实很简单,就是把97转成ascii能够在一个对话框中显示出来
但是发现一直死循环,也就是在Low4bit这个循环里面,初步来了,loop不起作用,
而我把loop Low4bit改成下面的代码
就能正常在一个对话框中显示97
在这个程序当中loop不起作用了,请问这个是什么情况?loop为什么失效?
有段程序,文档中的代码如下
.386
.model flat, stdcall
option casemap:none
include c:\masmplus\include\windows.inc
include c:\masmplus\include\kernel32.inc
includelib c:\masmplus\lib\kernel32.lib
include c:\masmplus\include\user32.inc
includelib c:\masmplus\lib\user32.lib
.data
MsgBoxCaption db "Result", 0
MsgBoxText db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.code
start:
mov al, 97h
call ShowAL
invoke MessageBox, NULL, addr MsgBoxText, addr MsgBoxCaption, MB_YESNOCANCEL
invoke ExitProcess, NULL
ShowAL proc
mov dl, al
mov cl, 04
shr al, cl
mov cx, 02h
xor ebx, ebx
mov esi, offset MsgBoxText
;mov cx, 1
Low4bit:
;invoke MessageBox, NULL, addr MsgBoxText, addr MsgBoxCaption, MB_YESNOCANCEL
cmp al, 09
jbe larger
add al, 07h
larger:
add al, 30h
mov [esi], al
inc esi
mov al, dl
and al, 0fh
loop Low4bit
ret
ShowAL endp
end start
代码其实很简单,就是把97转成ascii能够在一个对话框中显示出来
但是发现一直死循环,也就是在Low4bit这个循环里面,初步来了,loop不起作用,
而我把loop Low4bit改成下面的代码
dec cx
cmp cx, 0
jne Low4bit就能正常在一个对话框中显示97
在这个程序当中loop不起作用了,请问这个是什么情况?loop为什么失效?
...全文
相关推荐
swiper在vue项目中loop循环轮播失效的解决方法
今天小编就为大家分享一篇swiper在vue项目中loop循环轮播失效的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
c++迭代器失效问题
c++迭代器失效问题,描述c++中各种集合的迭代器使用
Oracle sequence 重置(失效恢复)
在Oracle数据库移植过程中,sequence可能失效,本资源可使失效的sequence重新恢复作用
swiper在angularjs中使用循环轮播失效的解决方法
今天小编就为大家分享一篇swiper在angularjs中使用循环轮播失效的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
MySQL多表Join优化指南[可运行源码]
本文详细介绍了MySQL中多表Join操作的性能优化方法,包括三种Join算法(Nested Loop Join、Block Nested Loop Join和Index Nested Loop Join)的原理及适用场景。文章通过一个实际案例展示了如何定位和解决Join性能问题,如关联字段无索引、字符集不一致导致的索引失效等。同时,推荐了DBdoctor SQL审核工具,它能自动识别多表Join问题并提供优化建议,帮助开发者提升数据库性能。优化Join操作的关键点包括:确保关联字段有索引、小表驱动大表、调整join buffer大小等。


