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