汇编
文章平均质量分 78
rayz
这个作者很懒,什么都没留下…
展开
-
80x86寻址模式
1.寄存器寻址不访问内存,在寄存器中完成操作mov bx,axmov es,axadd al,bh2.立即寻址操作数为常数,无须为获得操作数访问内存mov ax,0x10mov bx,0x12add ax,bx3.直接寻址直接给出操作数的内存地址,直接寻址默认使用ds作为段寄存器mov ax,[0x102]4.寄存器间接寻址使用寄存器中的值作原创 2013-01-12 16:49:53 · 387 阅读 · 0 评论 -
汇编字符串处理指令
注:以下内容为学习笔记,多数是从书本、资料中得来,只为加深印象,及日后参考。然而本人表达能力较差,写的不好。因非翻译、非转载,只好选原创,但多数乃摘抄,实为惭愧。但若能帮助一二访客,幸甚!一.传送字符串把字符串从一个内存位置复制到另一个内存位置。1.MOVS3种格式:MOVSB:传送单一字节MOVSW:传送一个字(2字节)MOVSL:传送一个双字转载 2013-01-13 15:34:02 · 963 阅读 · 0 评论 -
寄存器使用惯例
在给定的时刻只能有一个过程是活动的, 它占使用CPU的程序寄存器组. 程序寄存器组作为一个单个资源被所有的函数过程共享. 所以, 我们必须保证: 一个过程(调用者)调用另一个(被调用者)时, 被调用者不会覆盖某个调用者稍后会使用到的寄存器的值. 为此, IA32(俗称x86)采用了一组统一的寄存器使用惯例., 所有的过程调用都必须遵守, 包括程序库中的过程. 根据转载 2013-01-13 11:10:16 · 490 阅读 · 0 评论 -
汇编中的调用约定
调用栈栈这个概念在数据结构中有详细的讲解,就不罗嗦了。列出一些要点:1. 先入先出。2. 永远只能从栈的最上方存或取数据。 在x86处理器中,压栈的指令时PUSH。将一个item压入栈顶会导致栈顶指针减小4个字节。栈顶指针用寄存器ESP来存储, 相应的,这个寄存器的名字是Stack Pointer的缩写。 压栈压栈时,会依次发转载 2013-01-13 11:02:37 · 573 阅读 · 0 评论 -
无符号数加减乘除
无符号数加法addadd指令可以改变Flag Register中的ZF,SF,AF,CF,PF,OF位。下面是一个计算1-100和的程序global mainextern printfsegment .textmain: push ebp mov ebp,esp mov eax,0 mov edx,0loop: inc dl add al,dl adc a原创 2013-01-13 14:21:14 · 1682 阅读 · 0 评论