[分析程序]关于循环队列的几个细节问题
时间:2010-11-13
来源:互联网
Assembly code
.model small .486 .data show db "I am glad to see you." range dw 20 ;字符串长度 front dw ? ;首指针 rear dw ? ;尾指针 flag db ? ;为远跳转准备 times db 100 ;循环次数 .code .startup ;功能:把位置加1,并限制在长度为area的循环队列中 ;参数:position为当前的位置,area:队列长度 cycle macro position,increase,area ;这个macro是个宏,怎么去定义的。 add position,increase .if(position>area) sub position,area dec position .endif endm again: mov flag,0 mov front,0 mov rear,20 .repeat mov si,front .repeat ;此循环为显示从front到rear的字符 mov ah,02h mov dl,show[si] int 21h ;输出show[si]的字符 cycle si,1,range ;si加1并使其在循环为rang的队列中 .until(si==rear) mov dl,show[si] int 21h ;延时程序段 mov ecx,245678h ;这个功能号是什么意思?延时时间? next:NOP loopd next ;这句是什么含义?时间循环?为什么用loopd? ;将光标移到本行前面 mov ah,03h mov bh,0 int 10h ;读当前光标位置 mov dl,0 ;修改光标的列 ;不是mov ah,02h在前,mov dl,0在后吗? mov ah,02h int 10h ;查找下个显示的开头和结尾 mov si,front .repeat inc si .until(show[si]==' '||show[si]=='.') .if(show[si]==' ') inc si mov front,si ;设置头指针 dec si mov rear,si ;设置尾指针 .endif .until(show[si]=='.') jump: cmp flag,1 je again ;跳转到目的位置again dec times mov flag,1 cmp times,0 jne jump ;跳转到比较近的地方 .exit 0 end
作者: kartik 发布时间: 2010-11-13
力所能及的回答你的部分问题:
1、cycle macro position,increase,area ;这个macro是个宏,怎么去定义的。
宏是用macro和endm关键字定义的,macro前为宏名,后面为参数。
2、mov ecx,245678h ;这个功能号是什么意思?延时时间?
这是延时时间,在汇编语言中,通常用ecx做循环长度。
3、 mov dl,0 ;修改光标的列 ;不是mov ah,02h在前,mov dl,0在后吗?
ah和dl之间,谁前谁后对结果没有影响。
1、cycle macro position,increase,area ;这个macro是个宏,怎么去定义的。
宏是用macro和endm关键字定义的,macro前为宏名,后面为参数。
2、mov ecx,245678h ;这个功能号是什么意思?延时时间?
这是延时时间,在汇编语言中,通常用ecx做循环长度。
3、 mov dl,0 ;修改光标的列 ;不是mov ah,02h在前,mov dl,0在后吗?
ah和dl之间,谁前谁后对结果没有影响。
作者: asmlearn 发布时间: 2010-11-13
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28