8086cpu-intel汇编指令简介

  • jcxz   有条件跳转指令,cx为跳转条件。如果(cx)==0则跳转到指定标号处。跳转地址在机器码中已相对位置(-128~127)给出。

相当于                if((cx)==0)

jump short 标号

用法: jcxz 标号

  • loop  循环指令,循环条件同样以cx给出,(cx)!=0时跳转到指定标号处,(cx)==0不跳转,继续执行下一条指令。

用法: loop   标号

例如:                       ……

s  ……

……

loop s

  • call 子程序调用指令。

用法:call 标号 

该指令执行以下两步操作:

1、将当前的IP或者CS和IP入栈

(sp)=(sp)-2

((ss)*16+(sp))=(IP)

2、转移到标号处

(IP)=(IP)+16位位移(-32768~32767)

call far ptr 标号

该指令执行以下三步操作:

1、push cs

2、push ip

3、jmp far ptr 标号

        call reg

        call word ptr cs:ip

        call dword ptr cs:ip

  • ret 指令执行与call指令相反的操作。

1、pop ip

2、pop cs

  • mul  乘法指令。该指令要求相乘的两个数要么都是8bit,要么都是16bit。且有一个乘数为al(8 bit)或ax(16 bit)。对于8bit数相乘结果保存在ax(16 bit)中,16bit数相乘结果的高位保存在dx低位保存在ax中。

格式: mul reg

mul [...]

例子      1、mul byte ptr ds:ip

2、mul word ptr [...]

  • abc  带进位的加法指令

例子         abc ax bx

ax=ax+bx+cf

时间: 2024-10-08 03:18:53

8086cpu-intel汇编指令简介的相关文章

汇编指令简介

内存操作 NOP        (无操作)运行这条指令不会对寄存器,内存以及堆栈造成任何影响. PUSH       将操作数压入堆栈中. PUSHAD   指令把所有通用寄存器的内容按一定顺序压入到堆栈中 POP          出栈:它会取出堆栈顶部的第一个字母或者第一个值,然后存放到指定的目标地址内存单元中. POPAD     该指令与PUSHAD正好相反,它从堆栈中取值,并将它们放到相应的寄存器中. MOV         该指令将第二个操作数赋值给第一个操作数,例如: MOV EA

GNU ARM 汇编指令

http://blog.chinaunix.net/u2/87718/showart_1683402.html GNU ARM 汇编指令简介第一部分 Linux下ARM汇编语法尽管在Linux下使用C或C++编写程序很方便,但汇编源程序用于系统最基本的初始化,如初始化堆栈指针.设置页表.操作 ARM的协处理器等.初始化完成后就可以跳转到C代码执行.需要注意的是,GNU的汇编器遵循AT&T的汇编语法,可以从GNU的站点(www.gnu.org)上下载有关规范. 一. Linux汇编行结构任何汇编行

汇编指令:push、pop

8086CPU出栈入栈都是以字为单位进行的. push ax 由一下两步完成 1.SP=SP-2 2.将ax中的内容送入SS:SP指向的内存单元 pop ax 1.将SS:SP指向的内存单元中的内容送入ax 2.SP=SP+2 push 寄存器 pop 寄存器 push 段寄存器 pop 段寄存器 push 内存单元 pop 内存单元 只给出内存单元的偏移地址,段地址在指令执行时从ds中获得. 汇编指令:push.pop,布布扣,bubuko.com

一些汇编指令

AX Accumulator   用累加器进行的操作 输入输出 乘除 操作BX 基址寄存器 (Base Register) CX 计数寄存器 (Count Register)常用于 循环 计数器  在 位操作中 要用 CL来指明 位移的位数DX  数据寄存器(Data Register)  在 进行 双字节 运算时  也可以 存放 io 的端口地址MOV 数据传送指令 ADD 算数指令编程环境 Masm  调试 工具 DebugDebug  cpu 各种 寄存器 的 内容 内存的情况 在机器码中

AT&T汇编和Intel汇编语法主要区别

AT&T使用$表示立即操作数,而Intel的立即操作数是不需要界定的.因此,使用AT&T语法引用十进制值4时,使用$4,使用Intel语法时只需使用4.   AT&T在寄存器名称前加上前缀%,而Intel不这样做.因此,使用AT&T语法引用EAX寄存器写为%eax.   AT&T语法处理源和目标操作数时使用相反的顺序.把十进制值4传送给EAX寄存器,AT&T的语法是movl $4, %eax,而Intel语法是mov eax, 4.   AT&T语法

Linux下AT&T汇编语法格式与Intel汇编语法格式异同

由于绝大多数的国内程序员以前只接触过Intel格式的汇编语言,很少或几乎没有接触过AT&T汇编语言,虽然这些汇编代码都是Intel风格的.但在Unix和Linux系统中,更多采用的还是AT&T格式,两者在语法格式上有着很大的不同,其实完全可以使用原来汇编的思路解决问题,只要掌握下面两者的不同: 一.在AT&T汇编格式中,寄存器名要加上' %'作为前缀:而在Intel汇编格式中,寄存器名不需要加前缀.例如: AT&T格式 Intel格式 pushl %eax push eax

几种基本汇编指令详解

几种基本汇编指令详解 常见寄存器 寄存器 16位 32位 64位 累加寄存器 AX EAX RAX 基址寄存器 BX EBX RBX 计数寄存器 CX ECX RCX 数据寄存器 DX EDX RDX 堆栈基指针 BP EBP RBP 变址寄存器 SI ESI RSI 堆栈顶指针 SP ESP RSP 指令寄存器 IP EIP RIP 汇编指令 mov movb(8位).movw(16位).movl(32位).movq(64位) 寄存器寻址: movl %eax, %edx eax -> edx

Intel call指令

转载:http://blog.ftofficer.com/2010/04/n-forms-of-call-instructions/ 最近有一个需求,给你个地址,看看这个地址前面是不是一个CALL指令(请同学们自行联想该需求的来源).作为团队的救火队员+炮灰,这个简单的事情自然落在了我的头上. 这个事情很简单,作为一个善于站在别人肩膀上的程序员我们可以考虑使用 libdisasm:如果要考虑x64,就试试udis86:如果需要用Python,就有Python包装好的 pydasm.不过这两个40

8086汇编指令速查手册

一.常用指令 二.算术运算指令 三.逻辑运算指令四.串指令 五.程序跳转指令------------------------------------------ 计算机寄存器分类简介: 32位CPU所含有的寄存器有:4个数据寄存器(EAX.EBX.ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES.CS.SS.DS.FS和GS)1个指令指针寄存器(EIP) 1个标志寄存器(EFlags) 1.数据寄存器数据寄存器主要用来保存操作数和运算结