loop失效的问题

heqichen heqichen 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
刚刚开始认真学汇编,在www.aogosoft.com下载了一份《Win32汇编语言入门》V0.1汇编教程,觉得不错,现在在看,但是遇到个问题。。。

有段程序,文档中的代码如下
.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为什么失效?
...全文

相关推荐

评论 2
收藏 已收藏
分享
返回顶部
heqichen
汇编语言 21,500 成员 41,619 内容