汇编语言编程中应当注意的几大规范

来源:互联网 发布:淘宝关键词搜索排名 编辑:程序博客网 时间: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