大神们快来啊!求助!汇编莫名进入死循环。。。

hwd9654 2016-11-29 09:08:49
目的:16x16打印00-ff的ascii字符
问题:成功打印16x16的ascii字符,但是一直循环打印



assume cs:code ss:stack
stack segment
db 16 dup('0')
stack ends

code segment
start: mov sp, 16
mov ax, 0
mov dx, 0
mov cx, 16
mov bx, 0
L1: push cx
mov cx, 16
L2: cmp bl, 07h
jb print
cmp bl, 10h
ja print
jmp a1


print: mov al, 0
mov dl, bl
a2: mov ah, 02h
int 21h
mov dl, 20h
mov ah, 02h
int 21h
inc bl
loop L2

mov dl, 0dh
mov ah, 02h
int 21h
mov dl, 0ah
mov ah, 02h
int 21h
pop cx
loop L1

a1: mov dl, 23h
jmp a2


ending: mov ax, 4c00h
int 21h

code ends

end start
...全文
363 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-11-30
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒:再牛×的老师也无法代替学生自己领悟和上厕所! 单步调试和设断点调试是程序员必须掌握的技能之一。 学会在DosBox下使用TASM,Turbo debugger bc++3.1 http://download.csdn.net/source/2805028
zara 2016-11-30
  • 打赏
  • 举报
回复
引用
a1: mov dl, 23h
jmp a2
这里的 jmp a2 不对吧,又跑进循环里了,所以出不来了;没看出来这两指令的作用,直接删除了吧?
hwd9654 2016-11-30
  • 打赏
  • 举报
回复
谢谢各位 我已经找到问题了 外层循环结束应该直接跳到结束 (程序是我自己写的)
hwd9654 2016-11-29
  • 打赏
  • 举报
回复
难受啊 还是没找出来
hwd9654 2016-11-29
  • 打赏
  • 举报
回复
顶 upupup
hwd9654 2016-11-29
  • 打赏
  • 举报
回复
救命啊,找不出错难受死了

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧