汇编语言编程中应当注意的几大规范
来源:互联网 发布:淘宝关键词搜索排名 编辑:程序博客网 时间:2024/06/05 23:01
1.压栈弹栈操作必须在同一个程序段中完成。
同一个程序段的意思是:要么弹栈压栈都在主程序段,要么在某一个特定的子程序段。绝对不可以在主程序段压栈,在某个子程序段弹栈,看着好像这样可以在主程序与子程序段之间传递数值,实际上这样搞编译器不会理你,反之也是如此。
2.代码格式的规范
2.1 数据段的加入
如果你定义了数据段,那么程序在start标签后,一定要加:
mov ax,datamov ds,ax
2.2 子程序段的定义
有两种子程序段定义格式:
example proc near/***/retexample endpexample proc far/***/iretexample endp
注意!他们的返回字一个是ret,一个是iret.
数据段中的数据如何来定义,又怎么分类
数据段中的数据类型常用的就两种:equ与db
equ类型的数据代表的常量,一般定义了,就不在修改
db是一种寄存器型,定义之后,经常还找到它,对它修修改改:
A8255 equ 0646h LEDTAB db 06h,37h,68h ;如何取到db类型? lea si,ledtab mov al,[si] ;对al进行修改 mov al,*** ;修改后的结果返回给ledtab mov [si],al
跳转语句
汇编语言里的跳转指令很多,虽然不好记,但也不要只用jz , jnz。
常用的跳转指令有:
JE ;等于则跳转JNE ;不等于则跳转JZ ;为 0 则跳转JNZ ;不为 0 则跳转JS ;为负则跳转JNS ;不为负则跳转JC ;进位则跳转JNC ;不进位则跳转JO ;溢出则跳转JNO ;不溢出则跳转JA ;无符号大于则跳转JNA ;无符号不大于则跳转JAE ;无符号大于等于则跳转JNAE ;无符号不大于等于则跳转JG ;有符号大于则跳转JNG ;有符号不大于则跳转JGE ;有符号大于等于则跳转JNGE ;有符号不大于等于则跳转JB ;无符号小于则跳转JNB ;无符号不小于则跳转JBE ;无符号小于等于则跳转JNBE ;无符号不小于等于则跳转JL ;有符号小于则跳转JNL ;有符号不小于则跳转JLE ;有符号小于等于则跳转JNLE ;有符号不小于等于则跳转JP ;奇偶位置位则跳转JNP ;奇偶位清除则跳转JPE ;奇偶位相等则跳转
寄存器不够用怎么办
汇编语言里面的寄存器好少啊!不少人都这么说,这也是他们认为汇编语言难的原因。在常见的c++,java语言中,变量想定义多少都行,在汇编里却还得算计着。
实际上灵活的使用子程序段,就可以很大程度上缓解寄存器不够用的窘境。怎么使用呢?
程序是自然分段的,把各个功能分割出来,做成一个个子程序段。
在子程序段的开头
push axpush bxpush cxpush dx
在子程序段的末尾
pop dxpop cxpop bxpop ax
这样你就可以随心所欲的使用全部四个寄存器!
要注意:栈的规则,先进后出!
1 0
- 汇编语言编程中应当注意的几大规范
- UIViewController中loadView的用法(应当注意的几点)
- 注意的编程规范
- 上传文件中应当注意的细节
- 对于 Recursive Algorithm 中应当注意的
- 使用OpenCV中应当注意的几个问题
- 上传文件判断大小时应当注意的地方
- 应当注意的细节
- 工作计划制定应当遵循的几大原则
- 单片机汇编语言编程规范
- 汇编语言编程规范
- C++学习笔记之编程应当注意的问题
- 在gtk编译的过程中应当注意的。
- CPU卡发卡程序设计过程中应当注意的几个问题
- CPU卡发卡程序设计过程中应当注意的几个问题
- CPU卡发卡程序设计过程中应当注意的几个问题
- CPU卡发卡程序设计过程中应当注意的几个问题
- 上传文件中应当注意的细节(二)
- HDFS、YARN和MapReduce简介
- Java中的HashSet
- hadoop2.5.2 启动成功后,用jps查看节点:发现少了DataNode
- 单例模式
- UML学习归纳整理
- 汇编语言编程中应当注意的几大规范
- NOIP 2016 Day2 解题报告
- 跨服务器Session共享的四种方法
- UnityShader:摄像机深度图获取,屏幕分割,变形
- Mac下安装配置Maven
- 任务执行(二)
- 可以改善mysql性能的InnoDB配置参数
- 初步了解XML
- mysql中文乱码解决方法