汇编语言指令

汇编语言指令
汇编语言指令

ORG 0000H

NOP ;空操作指令

AJMP L0003 ;绝对转移指令

L0003: LJMP L0006 ;长调用指令

L0006: RR A ;累加器A内容右移(先置A为88H)

INC A ; 累加器A 内容加1

INC 01H ;直接地址(字节01H)内容加1

INC @R0 ; R0的内容(为地址) 的内容即间接RAM加1

;(设R0=02H,02H=03H,单步执行后02H=04H)

INC @R1 ; R1的内容(为地址) 的内容即间接RAM加1

;(设R1=02H,02H=03H,单步执行后02H=04H)

INC R0 ; R0的内容加1 (设R0为00H,单步执行后查R0内容为多少) INC R1 ; R1的内容加1(设R1为01H,单步执行后查R1内容为多少) INC R2 ; R2的内容加1 (设R2为02H,单步执行后查R2内容为多少) INC R3 ; R3的内容加1(设R3为03H,单步执行后查R3内容为多少) INC R4 ; R4的内容加1(设R4为04H,单步执行后查R4内容为多少) INC R5 ; R5的内容加1(设R5为05H,单步执行后查R5内容为多少) INC R6 ; R6的内容加1(设R6为06H,单步执行后查R6内容为多少) INC R7 ; R7的内容加1(设R7为07H,单步执行后查R7内容为多少) JBC 20H,L0017; 如果位(如20H,即24H的0位)为1,则转移并清0该位L0017: ACALL S0019 ;绝对调用

S0019: LCALL S001C ;长调用

S001C: RRC A ;累加器A的内容带进位位右移(设A=11H,C=0

;单步执行后查A和C内容为多少)

DEC A ;A的内容减1

DEC 01H ;直接地址(01H)内容减1

DEC @R0 ;R0间址减1,即R0的内容为地址,该地址的内容减1 DEC @R1 ; R1间址减1

DEC R0 ; R0内容减1

DEC R1 ; R1内容减1

DEC R2 ; R2内容减1

DEC R3 ; R3内容减1

DEC R4 ; R4内容减1

DEC R5 ; R5内容减1

DEC R6 ; R6内容减1

DEC R7 ; R7内容减1

JB 20H,L002D;如果位(20H,即24H的0位)为1则转移

L002D: AJMP L0017 ;绝对转移

RET ;子程序返回指令

RL A ;A左移

ADD A,#01H ;A的内容与立即数(01H)相加

ADD A,01H ; A的内容与直接地址(01H内容)相加

ADD A,@R0 ; A的内容与寄存器R0的间址内容相加

ADD A,@R1 ; A的内容与寄存器R1的间址内容相加

ADD A,R0 ; A的内容与寄存器R0的内容相加

ADD A,R1 ; A的内容与寄存器R1的内容相加

ADD A,R2 ; A的内容与寄存器R2的内容相加

ADD A,R3 ; A的内容与寄存器R3的内容相加

ADD A,R4 ; A的内容与寄存器R4的内容相加

ADD A,R5 ; A的内容与寄存器R5的内容相加

ADD A,R6 ; A的内容与寄存器R6的内容相加

ADD A,R7 ; A的内容与寄存器R7的内容相加

JNB 30H,L0041 ;直接位(30H)为0相对转移

L0041: ACALL S0100 ;绝对调用

RETI ;中断返回指令

RLC A ;带进位位左移

ADDC A,#02H ;A带进位位与立即数(#02H)相加ADDC A,02H ; A带进位位与直接地扯(02H内容)相加ADDC A,@R0 ; A带进位位与R0间扯内容相加ADDC A,@R1 ; A带进位位与R1间扯内容相加ADDC A,R0 ; A带进位位与R0内容相加

ADDC A,R1 ; A带进位位与R1内容相加

ADDC A,R2 ; A带进位位与R2内容相加

ADDC A,R3 ; A带进位位与R3内容相加

ADDC A,R4 ; A带进位位与R4内容相加

ADDC A,R5 ; A带进位位与R5内容相加

ADDC A,R6 ; A带进位位与R6内容相加

ADDC A,R7 ; A带进位位与R7内容相加

JC L0095 ;进位为1转移

NOP

AJMP L0017 ;绝对转移

ORL 02H,A ;直接地址内容与A或

ORL 02H,#02H ; 直接地址内容与立即数或

ORL A,#44H ;A与立即数或

ORL A,02H ; A与直接地址内容或

ORL A,@R0 ; A与R0间址内容或

ORL A,@R1 ; A与R1间址内容或

ORL A,R0 ; A与R0内容或

ORL A,R1 ; A与R1内容或

ORL A,R2 ; A与R2内容或

ORL A,R3 ; A与R3内容或

ORL A,R4 ; A与R4内容或

ORL A,R5 ; A与R5内容或

ORL A,R6 ; A与R6内容或

ORL A,R7 ; A与R7内容或

JNC L0017 ;进位为0转移

ACALL L0017 ;绝对调用

ANL 02H,A ; 直接地址与A与

ANL 02H,#02H ; 立即数与直接地址与ANL A,#02H ; A与立即数与

ANL A,02H ;A与直接地址与

ANL A,@R0 ; A与R0间址与

ANL A,@R1 ; A与R1间址与

ANL A,R0 ; A与R0与

ANL A,R1 ; A与R1与

ANL A,R2 ; A与R2与

ANL A,R3 ; A与R3与

ANL A,R4 ; A与R4与

ANL A,R5 ; A与R5与

ANL A,R6 ; A与R6与

ANL A,R7 ; A与R7与

JZ L0084 ;A为零转移

L0084: AJMP L0017 ;绝对转移

XRL 01H,A ;直接地址与A异或

XRL 02H,#01H ; 直接地址与立即数异或XRL A,#01H ;A与立即数异或

XRL A,01H ; A与直接地址异或

XRL A,@R0 ; A与R0间址址异或

XRL A,@R1 ; A与R1间址址异或

XRL A,R0 ; A与R0异或

XRL A,R1 ; A与R1异或

XRL A,R2 ; A与R2异或

XRL A,R3 ; A与R3异或

XRL A,R4 ; A与R4异或

L0095: XRL A,R5 ; A与R5异或

XRL A,R6 ; A与R6异或

XRL A,R7 ; A与R7异或

JNZ L0084 ;A不为零转

L009A: ACALL L0084 ;绝对调用

ORL C,01H ;直接位或到进位

JMP @A+DPTR;相对于DPTR间接转MOV A,#01H ;立即数送A

MOV 01H,#02H ;立即数送直接地址MOV @R0,#01H ;立即数送间址R0 MOV @R1,#02H ; 立即数送间址R1 MOV R0,#01H ; 立即数送R0

MOV R1,#01H ; 立即数送R1

MOV R2,#01H ; 立即数送R2

MOV R3,#01H ; 立即数送R3

MOV R4,#01H ; 立即数送R4

MOV R5,#01H ; 立即数送R5

MOV R6,#01H ; 立即数送R6

MOV R7,#01H ; 立即数送R7

SJMP L00BA ;短转移

L00BA: AJMP L0095 ;绝对转移

ANL C,02H ;直接地址与进位与

ORG 00C0H ;

MOV 02H,01H ;直接地址送直接地址

MOV 01H,@R0;间址R0送直接地址

MOV 01H,@R1; 间址R1送直接地址

MOV 01H,R0 ; R0送直接地址

MOV 01H,R1 ; R1送直接地址

MOV 01H,R2 ; R2送直接地址

MOV 01H,R3 ; R3送直接地址

MOV 01H,R4 ; R4送直接地址

MOV 01H,R5 ; R5送直接地址

MOV 01H,R6 ; R6送直接地址

MOV 01H,R7 ; R7送直接地址

NOP

MOV DPTR,#1234H;建立数据指针地址为1234H

ACALL L00BA ;绝对调用

MOV 03H,C ;进位送03H位(即20H的03位)

MOVC A,@A+DPTR ;由A+DPTR寻扯的程序存贮器字节送A SUBB A,#01H ;A减去立即数和进位位

SUBB A,02H ; A减去直接地址内容和进位位

SUBB A,@R0 ; A减去R0间接RAM和进位位

SUBB A,@R1 ; A减去R1间接RAM和进位位

SUBB A,R0 ; A减去R0和进位位

SUBB A,R1 ; A减去R1和进位位

SUBB A,R2 ; A减去R2和进位位

SUBB A,R3 ; A减去R3和进位位

SUBB A,R4 ; A减去R4和进位位

SUBB A,R5 ; A减去R5和进位位

SUBB A,R6 ; A减去R6和进位位

SUBB A,R7 ; A减去R7和进位位

ORL C,/00H ;直接位的反或到进位

AJMP L0084 ;绝对转移

MOV C,03H ;直接位数送进位

INC DPTR ;数据指针加1

MUL AB ;A乘以B

NOP ;A5H为二字节空操作指令

NOP

MOV @R0,05H ;直接字芯送R0间接RAM

MOV @R1,05H ; 直接字芯送R1间接RAM

MOV R0,05H ; 直接字芯送R0

MOV R1,05H ; 直接字芯送R1

S0100: MOV R2,05H ; 直接字芯送R2

MOV R3,05H ; 直接字芯送R3

MOV R4,05H ; 直接字芯送R4

MOV R5,05H ; 直接字芯送R5

MOV R6,05H ; 直接字芯送R6

MOV R7,05H ; 直接字芯送R7

ANL C,/04H ; 直接位的反与到进位

ACALL S0100 ;绝对调用

CPL 04H ;直接位取反

CPL C ;进位取反

CJNE A,#01H,L0139 ;立即数与A比较,不相等则转移

CJNE A,01H,L0139 ; 直接字节与A比较,不相等则转移

CJNE @R0,#01H,L0139 ; 立即数与R0间接RAM比较,不相等则转移CJNE @R1,#01H,L0139 ; 立即数与R1间接RAM比较,不相等则转移CJNE R0,#01H,L0139 ; 立即数与R0比较,不相等则转移

CJNE R1,#01H,L0139 ; 立即数与R1比较,不相等则转移

CJNE R2,#01H,L0139 ; 立即数与R2比较,不相等则转移

CJNE R3,#01H,L0139 ; 立即数与R3比较,不相等则转移

CJNE R4,#01H,L0139 ; 立即数与R4比较,不相等则转移

CJNE R5,#01H,L0139 ; 立即数与R5比较,不相等则转移

CJNE R6,#01H,L0139 ; 立即数与R6比较,不相等则转移

CJNE R7,#01H,L0139 ; 立即数与R7比较,不相等则转移

PUSH 00H ;直接字节进栈,SP加1

L0139: AJMP L0084 ;绝对转移

CLR 04H ;直接位清零

CLR C ;清零进位

SWAP A ;A左环移四位(A的二个半字节交换)

XCH A,05H ;交换A和直接字节

XCH A,@R0 ; 交换A和R0间接RAM

XCH A,@R1 ; 交换A和R1间接RAM

XCH A,R0 ; 交换A和R0

XCH A,R1 ; 交换A和R1

XCH A,R2 ; 交换A和R2

XCH A,R3 ; 交换A和R3

XCH A,R4 ; 交换A和R4

XCH A,R5 ; 交换A和R5

XCH A,R6 ; 交换A和R6

XCH A,R7 ; 交换A和R7

POP 00H ;直接字节出栈,SP减1

ACALL L0139 ;绝对调用

SETB 03H ;置位直接位

SETB C ;置位进位

DA A ;A的十进制加法调熊

DJNZ 01H,L0139 ;直接字节减1,不为零则转移

XCHD A,@R0 ;交换A和R0间接RAM的低4位XCHD A,@R1 ; 交换A和R1间接RAM的低4位

L0158: DJNZ R0,L0139 ; R0减1,不为零则转移DJNZ R1,L0158 ; R1减1,不为零则转移

DJNZ R2,L0158 ; R2减1,不为零则转移

DJNZ R3,L0158 ; R3减1,不为零则转移

DJNZ R4,L0158 ; R4减1,不为零则转移

DJNZ R5,L0158 ; R5减1,不为零则转移

DJNZ R6,L0158 ; R6减1,不为零则转移

DJNZ R7,L0158 ; R7减1,不为零则转移

MOVX A,@DPTR ;外部数据(16位地址)送A

L0169: NOP

AJMP L0139 ;绝对转移

MOVX A,@R0 ;R0间址即外部数据(8位地址)送A MOVX A,@R1 ; R1间址即外部数据(8位地址)送A CLR A ;清零A

MOV A,05H ;直接字节送A

MOV A,@R0 ;R0间接RAM送A

MOV A,@R1 ; R1间接RAM送A

MOV A,R0 ; R0送A

MOV A,R1 ; R1送A

MOV A,R2 ; R2送A

MOV A,R3 ; R3送A

MOV A,R4 ; R4送A

MOV A,R5 ; R5送A

MOV A,R6 ; R6送A

MOV A,R7 ; R7送A

MOVX @DPTR,A ;A送外部数据(16位地址)

NOP

ACALL L0169 ;绝对调用

MOVX @R0,A ;A送R0间址即外部数据(8位地址) MOVX @R1,A ; A送R1间址即外部数据(8位地址) CPL A ;A取反

MOV 05H,A ;A送直接字节

MOV @R0,A ; A送R0间址即间接RAM

MOV @R1,A ; A送R1间址即间接RAM

MOV R0,A ; A送R0

MOV R1,A ; A送R1

MOV R2,A ; A送R2

MOV R3,A ; A送R3

MOV R4,A ; A送R4

MOV R5,A ; A送R5

MOV R6,A ; A送R6

MOV R7,A ; A送R7

END

51的汇编控制指令详细列表

8051 INSTRUCTION SET

1.Arithmetic operations:

Mnemonic Byte Cyc

ADD A,@Ri 1 1

ADD A,Rn 1 1

ADD A,direct 2 1

ADD A,#data 2 1

ADDC A,@Ri 1 1

ADDC A,Rn 1 1

ADDC A,direct 2 1

ADDC A,#data 2 1

SUBB A,@Ri 1 1

SUBB A,Rn 1 1

SUBB A,direct 2 1

SUBB A,#data 2 1

INC A 1 1

INC @Ri 1 1

INC Rn 1 1

INC DPTR 1 1

INC direct 2 1

INC direct 2 1

DEC A 1 1

DEC @Ri 1 1

DEC Rn 1 1

DEC direct 2 1

MUL AB 1 4

DIV AB 1 4

DA A 1 1

8051的汇编控制指令,占用字节,执行周期列表3.Data transfer:

Mnemonic Byte Cyc

MOV A,@Ri 1 1

MOV DPTR,#data16 3 2

MOV A,Rn 1 1

MOVC A,@A+DPTR 1 2

MOV A,direct 2 1

MOVC A,@A+PC 1 2

MOV A,#data 2 1

MOVX A,@Ri 1 2 8051的汇编控制指令,占用字节,执行周期列表2. Logical opreations:

ANL A,@Ri 1 1

XRL A,@Ri 1 1

ANL A,Rn 1 1

XRL A,Rn 1 1

ANL A,direct 2 1

XRL A,direct 2 1

ANL A,#data 2 1

XRL A,#data 2 1

ANL direct,A 2 1

XRL direct,A 2 1

ANL direct,#data 3 2

XRL direct,#data 3 2

ORL A,@Ri 1 1

CLR A 1 1

ORL A,Rn 1 1

CPL A 1 1

ORL A,direct 2 1

RL A 1 1

ORL A,#data 2 1

RLC A 1 1

ORL direct,A 2 1

RR A 1 1

ORL direct,#data 3 2

RRC A 1 1

SWAP A 1 1

8051的汇编控制指令,占用字节,执行周期列表4.Boolean variable manipulation:

Mnemonic Byte Cyc

CLR C 1 1

ANL C,bit 2 2

SETB C 1 1

ANL C,/bit 2 2

CPL C 1 1

ORL C,bit 2 2

CLR bit 2 1

ORL C,/bit 2 2

SETB bit 2 1

MOV C,bit 2 1

CPL bit 2 1

MOV bit,C 2 2

MOV @Ri,A 1 1

MOVX A,@DPTR 1 2 MOV @Ri,direct 2 2 MOVX @Ri,A 1 2 MOV @Ri,#data 2 1 MOVX @DPTR,A 1 2 MOV Rn,A 1 1 PUSH direct 2 2 MOV Rn,direct 2 2 POP direct 2 2

MOV Rn,#data 2 1 XCH A,@Ri 1 1 MOV direct,A 2 1 XCH A,Rn 1 1

MOV direct,@Ri 2 2 XCH A,direct 2 1 MOV direct,Rn 2 2 XCHD A,@Ri 1 1 MOV direct,direct 3 2 MOV direct,#data 3 2 8051的汇编控制指令,占用字节,执行周期列表5.Program and machine control:

Mnemonic Byte Cyc

NOP 1 1

JZ rel 2 2

RET 1 2

JNZ rel 2 2

RETI 1 2

JC rel 2 2

ACALL addr11 2 2

JNC rel 2 2

AJMP addr11 2 2

JB bit,rel 3 2

LCALL addr16 3 2

JNB bit,rel 3 2

LJMP addr16 3 2

JBC bit,rel 3 2

SJMP rel 2 2

CJNE A,direct,rel 3 2

JMP @A+DPTR 1 2

CJNE A,#data,rel 3 2

DJNZ Rn,rel 2 2

CJNE @Ri,#data,rel 3 2

DJNZ direct,rel 3 2

CJNE Rn,#data,rel 3 2

汇编语言知识大全

第一章基础知识: 一.机器码:1.计算机只认识0,1两种状态。而机器码只能由0,1组成。故机器码相当难认,故产生了汇编语言。 2.其中汇编由三类指令形成:汇编指令(有机器码对应),伪指令,其他符号(编译的时候有用)。 每一总CPU都有自己的指令集;注意学习的侧重点。 二.存储器:1.存储单元中数据和指令没任何差别。 2.存储单元:Eg:128个储存单元(0~127)128byte。 线: 1.地址总线:寻址用,参数(宽度)为N根,则可以寻到2^N个内存单元。 据总线:传送数据用,参数为N根,一次可以传送N/8个存储单元。 3.控制总线:cpu对元器件的控制能力。越多控制力越强。 四.内存地址空间:1.由地址总线决定大小。 2.主板:cpu和核心器件(或接口卡)用地址总线,数据总线,控制总 线连接起来。 3.接口卡:由于cpu不能直接控制外设,需通过接口卡间接控制。

4.各类存储器芯片:RAM,BIOS(主板,各芯片)的ROM,接卡槽的 RAM CPU在操控他们的时候,把他们都当作内存来对待,把他们总的看作一个由 若干个存储单元组成的逻辑存储器,即我们所说的内存地址空间。 自己的一点理解:CPU对内存的操作是一样的,但是在cpu,内存,芯片之间的硬件本身所牵扯的线是不同的。所以一些地址的功能是对应一些芯片的。 第二章寄存器 引入:CPU中含有运算器,寄存器,控制器(由内部总线连接)。而寄存器是可以用来指令读写的部件。8086有14个寄存器(都是16位,2个存储空间)。 一.通用寄存器(ax,bx,cx,dx),16位,可以分为高低位 注意1.范围:16位的2^16-1,8位的2^8-1 2.进行数据传送或运算时要注意位数对应,否则会报错 二.字:1. 1个字==2个字节。 2. 在寄存器中的存储:0x高位字节低位字节;单元认定的是低单元 数制,16进制h,2进制b

汇编语言指令表

汇编语言指令表文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]

伪指令 1、定位伪指令 ORG m 2、定义字节伪指令 DB X1,X2,X3,…,Xn 3、字定义伪指令 DW Y1,Y2,Y3,…,Yn 4、汇编结束伪指令 END 寻址方式 MCS-51单片机有五种寻址方式: 1、寄存器寻址 2、寄存器间接寻址 3、直接寻址 4、立即数寻址 5、基寄存器加变址寄存器间接寻址 6、相对寻址 7、位寻址 数据传送指令 一、以累加器A为目的操作数的指令(4条) MOV A,Rn ;(Rn)→A n=0~7 MOV A,direct ;( direct )→A MOV A,@Ri ;((Ri))→A i=0~1 MOV A,#data ; data →A 二、以Rn为目的操作数的指令(3条) MOV Rn ,A;(A)→ Rn MOV Rn ,direct;( direct )→ Rn MOV Rn ,#data; data → Rn 三、以直接寻址的单元为目的操作数的指令(5条) MOV direct,A;(A)→direct MOV direct,Rn;(Rn)→direct MOV direct,direct ;(源direct)→目的direct MOV direct,@Ri;((Ri))→direct MOV direct,#data; data→direct 四、以寄存器间接寻址的单元为目的操作数的指令(3条) MOV @Ri,A;(A)→(Ri) MOV @Ri,direct;(direct)→(Ri) MOV @Ri,#data; data→(Ri) 五、十六位数据传送指令(1条) MOV DPTR,#data16;dataH→DPH,dataL →DPL

汇编语言指令汇总

汇编语言程序设计资料简汇 通用寄存器 8位通用寄存器8个:AL、AH、BL、BH、CL、CH、DL、DH。 16位通用寄存器8个:AX、BX、CX、DX、SI、DI、BP、SP。 AL与AH、BL与BH、CL与CH、DL与DH分别对应于AX、BX、CX和DX的低8位与高8位。专用寄存器 指令指针:IP(16位)。 标志寄存器:没有助记符(FLAGS 16位)。 段寄存器 段寄存器:CS、DS、ES、SS。 内存分段:80x86采用分段内存管理机制,主要包括下列几种类型的段: ?代码段:用来存放程序的指令序列。 ?数据段:用来存放程序的数据。 ?堆栈段:作为堆栈使用的内存区域,用来存放过程返回地址、过程参数等。 物理地址与逻辑地址 ?物理地址:内存单元的实际地址,也就是出现在地址总线上的地址。 ?逻辑地址:或称分段地址。 ?段地址与偏移地址都是16位。 ?系统采用下列方法将逻辑地址自动转换为20位的物理地址: 物理地址= 段地址×16 + 偏移地址 ?每个内存单元具有唯一的物理地址,但可由不同的逻辑地址描述。 与数据有关的寻址方式 立即寻址方式 立即寻址方式所提供的操作数紧跟在操作码的后面,与操作码一起放在指令代码段中。立即数可以是8位数或16位数。如果是16位数,则低位字节存放在低地址中,高位字节存放在高地址中。 例:MOV AL,18 指令执行后,(AL)= 12H 寄存器寻址方式 在寄存器寻址方式中,操作数包含于CPU的内部寄存器之中。这种寻址方式大都用于寄存器之间的数据传输。 例3:MOV AX,BX 如指令执行前(AX)= 6789H,(BX)= 0000H;则指令执行后,(AX)= 0000H,(BX)保持不变。 直接寻址方式 直接寻址方式是操作数地址的16位偏移量直接包含在指令中,和指令操作码一起放在代码段,而操作数则在数据段中。操作数的地址是数据段寄存器DS中的内容左移4位后,加上指令给定的16位地址偏移量。直接寻址方式适合于处理单个数据变量。 寄存器间接寻址方式 在寄存器间接寻址方式中,操作数在存储器中。操作数的有效地址由变址寄存器SI、DI或基址寄存器BX、BP提供。 如果指令中指定的寄存器是BX、SI、DI,则用DS寄存器的内容作为段地址。 如指令中用BP寄存器,则操作数的段地址在SS中,即堆栈段。

(完整word版)汇编语言常用指令大全,推荐文档

MOV指令为双操作数指令,两个操作数中必须有一个是寄存器. MOV DST , SRC // Byte / Word 执行操作: dst = src 1.目的数可以是通用寄存器, 存储单元和段寄存器(但不允许用CS段寄存器). 2.立即数不能直接送段寄存器 3.不允许在两个存储单元直接传送数据 4.不允许在两个段寄存器间直接传送信息 PUSH入栈指令及POP出栈指令: 堆栈操作是以“后进先出”的方式进行数据操作. PUSH SRC //Word 入栈的操作数除不允许用立即数外,可以为通用寄存器,段寄存器(全部)和存储器. 入栈时高位字节先入栈,低位字节后入栈. POP DST //Word 出栈操作数除不允许用立即数和CS段寄存器外, 可以为通用寄存器,段寄存器和存储器. 执行POP SS指令后,堆栈区在存储区的位置要改变. 执行POP SP 指令后,栈顶的位置要改变. XCHG(eXCHanG)交换指令: 将两操作数值交换. XCHG OPR1, OPR2 //Byte/Word 执行操作: Tmp=OPR1 OPR1=OPR2 OPR2=Tmp 1.必须有一个操作数是在寄存器中 2.不能与段寄存器交换数据 3.存储器与存储器之间不能交换数据. XLAT(TRANSLATE)换码指令: 把一种代码转换为另一种代码. XLAT (OPR 可选) //Byte 执行操作: AL=(BX+AL) 指令执行时只使用预先已存入BX中的表格首地址,执行后,AL中内容则是所要转换的代码. LEA(Load Effective Address) 有效地址传送寄存器指令 LEA REG , SRC //指令把源操作数SRC的有效地址送到指定的寄存器中. 执行操作: REG = EAsrc 注: SRC只能是各种寻址方式的存储器操作数,REG只能是16位寄存器 MOV BX , OFFSET OPER_ONE 等价于LEA BX , OPER_ONE MOV SP , [BX] //将BX间接寻址的相继的二个存储单元的内容送入SP中 LEA SP , [BX] //将BX的内容作为存储器有效地址送入SP中 LDS(Load DS with pointer)指针送寄存器和DS指令 LDS REG , SRC //常指定SI寄存器。 执行操作: REG=(SRC), DS=(SRC+2) //将SRC指出的前二个存储单元的内容送入指令中指定的寄存器中,后二个存储单元送入DS段寄存器中。

(完整word版)汇编语言指令集合-吐血整理,推荐文档

8086/8088指令系统记忆表 数据寄存器分为: AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据. BH&BL=BX(base):基址寄存器,常用于地址索引; CH&CL=CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器. DH&DL=DX(data):数据寄存器,常用于数据传递。他们的特点是,这4个16位的寄存器可以分为高8位: AH, BH, CH, DH.以及低八位:AL,BL,CL,DL。这2组8位寄存器可以分别寻址,并单独使用。 另一组是指针寄存器和变址寄存器,包括: SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置; BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置; SI(Source Index):源变址寄存器可用来存放相对于DS段之源变址指针; DI(Destination Index):目的变址寄存器,可用来存放相对于ES 段之目的变址指针。 指令指针IP(Instruction Pointer) 标志寄存器FR(Flag Register) OF(overflow flag) DF(direction flag) CF(carrier flag) PF(parity flag) AF(auxiliary flag) ZF(zero flag) SF(sign flag) IF(interrupt flag) TF(trap flag) 段寄存器(Segment Register) 为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址: CS(Code Segment):代码段寄存器; DS(Data Segment):数据段寄存器; SS(Stack Segment):堆栈段寄存器;

汇编语言指令详解

第一讲 第三章 指令系统--寻址方式 回顾: 8086/8088的内部结构和寄存器,地址分段的概念,8086/8088的工作过 程。 重点和纲要:指令系统--寻址方式。有关寻址的概念;6种基本的寻址方式及 有效地址的计算。 教学方法、实施步骤 时间分配 教学手段 回 顾 5”×2 板书 计算机 投影仪 多媒体课件等 讲 授 40” ×2 提 问 3” ×2 小 结 2” ×2 讲授内容: 3.1 8086/8088寻址方式 首先,简单讲述一下指令的一般格式: 操作码 操作数 …… 操作数 计算机中的指令由操作码字段和操作数字段组成。 操作码:指计算机所要执行的操作,或称为指出操作类型,是一种助记符。 操作数:指在指令执行操作的过程中所需要的操作数。该字段除可以是操作数本身外,也可以是操作数地址或是地址的一部分,还可以是指向操作数地址的指针或其它有关操作数的信息。 寻址方式就是指令中用于说明操作数所在地址的方法,或者说是寻找操作数有效地址的方法。8086/8088的基本寻址方式有六种。 1.立即寻址 所提供的操作数直接包含在指令中。它紧跟在操作码的后面,与操作码一起放在代码段区域中。如图所示。 例如:MOV AX ,3000H 立即数可以是8位的,也可以是16位的。若

是16位的,则存储时低位在前,高位在后。 立即寻址主要用来给寄存器或存储器赋初值。 2.直接寻址 操作数地址的16位偏移量直接包含在指令中。它与操作码—起存放在代码段区域,操作数一般在数据段区域中,它的地址为数据段寄存器DS加上这16位地址偏移量。如图2-2所示。 例如: MOV AX,DS:[2000H]; 图2-2 (对DS来讲可以省略成 MOV AX,[2000H],系统默认为数据段)这种寻址方法是以数据段的地址为基础,可在多达64KB的范围内寻找操作数。 8086/8088中允许段超越,即还允许操作数在以代码段、堆栈段或附加段为基准的区域中。此时只要在指令中指明是段超越的,则16位地址偏移量可以与CS或SS或ES相加,作为操作数的地址。 MOV AX,[2000H] ;数据段 MOV BX,ES:[3000H] ;段超越,操作数在附加段 即绝对地址=(ES)*16+3000H 3.寄存器寻址 操作数包含在CPU的内部寄存器中,如寄存器AX、BX、CX、DX等。 例如:MOV DS,AX MOV AL,BH 4.寄存器间接寻址 操作数是在存储器中,但是,操作数地址的16位偏移量包含在以下四个寄存器SI、DI、BP、BX之一中。可以分成两种情况:

单片机汇编语言指令集

汇编语言的所有指令数据传送指令集 MOV 功能: 把源操作数送给目的操作数 语法: MOV 目的操作数,源操作数 格式: MOV r1,r2 MOV r,m MOV m,r MOV r,data XCHG 功能: 交换两个操作数的数据 语法: XCHG 格式: XCHG r1,r2 XCHG m,r XCHG r,m PUSH,POP 功能: 把操作数压入或取出堆栈 语法: PUSH 操作数POP 操作数 格式: PUSH r PUSH M PUSH data POP r POP m PUSHF,POPF,PUSHA,POPA 功能: 堆栈指令群 格式: PUSHF POPF PUSHA POPA LEA,LDS,LES 功能: 取地址至寄存器 语法: LEA r,m LDS r,m LES r,m XLAT(XLATB) 功能: 查表指令 语法: XLAT XLAT m 算数运算指令 ADD,ADC 功能: 加法指令 语法: ADD OP1,OP2 ADC OP1,OP2 格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data 影响标志: C,P,A,Z,S,O SUB,SBB 功能:减法指令 语法: SUB OP1,OP2 SBB OP1,OP2 格式: SUB r1,r2 SUB r,m SUB m,r SUB r,data SUB m,data 影响标志: C,P,A,Z,S,O

INC,DEC 功能: 把OP的值加一或减一 语法: INC OP DEC OP 格式: INC r/m DEC r/m 影响标志: P,A,Z,S,O NEG 功能: 将OP的符号反相(取二进制补码) 语法: NEG OP 格式: NEG r/m 影响标志: C,P,A,Z,S,O MUL,IMUL 功能: 乘法指令 语法: MUL OP IMUL OP 格式: MUL r/m IMUL r/m 影响标志: C,P,A,Z,S,O(仅IMUL会影响S标志) DIV,IDIV 功能:除法指令 语法: DIV OP IDIV OP 格式: DIV r/m IDIV r/m CBW,CWD 功能: 有符号数扩展指令 语法: CBW CWD AAA,AAS,AAM,AAD 功能: 非压BCD码运算调整指令 语法: AAA AAS AAM AAD 影响标志: A,C(AAA,AAS) S,Z,P(AAM,AAD) DAA,DAS 功能: 压缩BCD码调整指令 语法: DAA DAS 影响标志: C,P,A,Z,S 位运算指令集 AND,OR,XOR,NOT,TEST 功能: 执行BIT与BIT之间的逻辑运算 语法: AND r/m,r/m/data OR r/m,r/m/data XOR r/m,r/m/data TEST r/m,r/m/data NOT r/m 影响标志: C,O,P,Z,S(其中C与O两个标志会被设为0) NOT指令不影响任何标志位 SHR,SHL,SAR,SAL 功能: 移位指令 语法: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL

汇编语言指令

汇编语言指令集 数据传送指令集 MOV 功能: 把源操作数送给目的操作数 语法: MOV 目的操作数,源操作数 格式: MOV r1,r2 MOV r,m MOV m,r MOV r,data XCHG 功能: 交换两个操作数的数据 语法: XCHG 格式: XCHG r1,r2 XCHG m,r XCHG r,m PUSH,POP 功能: 把操作数压入或取出堆栈 语法: PUSH 操作数POP 操作数 格式: PUSH r PUSH M PUSH data POP r POP m PUSHF,POPF,PUSHA,POPA 功能: 堆栈指令群 格式: PUSHF POPF PUSHA POPA LEA,LDS,LES 功能: 取地址至寄存器 语法: LEA r,m LDS r,m LES r,m XLAT(XLATB) 功能: 查表指令 语法: XLAT XLAT m 算数运算指令 ADD,ADC 功能: 加法指令 语法: ADD OP1,OP2 ADC OP1,OP2 格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data 影响标志: C,P,A,Z,S,O SUB,SBB 功能:减法指令 语法: SUB OP1,OP2 SBB OP1,OP2

格式: SUB r1,r2 SUB r,m SUB m,r SUB r,data SUB m,data 影响标志: C,P,A,Z,S,O INC,DEC 功能: 把OP的值加一或减一 语法: INC OP DEC OP 格式: INC r/m DEC r/m 影响标志: P,A,Z,S,O NEG 功能: 将OP的符号反相(取二进制补码) 语法: NEG OP 格式: NEG r/m 影响标志: C,P,A,Z,S,O MUL,IMUL 功能: 乘法指令 语法: MUL OP IMUL OP 格式: MUL r/m IMUL r/m 影响标志: C,P,A,Z,S,O(仅IMUL会影响S标志) DIV,IDIV 功能:除法指令 语法: DIV OP IDIV OP 格式: DIV r/m IDIV r/m CBW,CWD 功能: 有符号数扩展指令 语法: CBW CWD AAA,AAS,AAM,AAD 功能: 非压BCD码运算调整指令 语法: AAA AAS AAM AAD 影响标志: A,C(AAA,AAS) S,Z,P(AAM,AAD) DAA,DAS 功能: 压缩BCD码调整指令 语法: DAA DAS 影响标志: C,P,A,Z,S 位运算指令集 AND,OR,XOR,NOT,TEST 功能: 执行BIT与BIT之间的逻辑运算 语法: AND r/m,r/m/data OR r/m,r/m/data XOR r/m,r/m/data TEST r/m,r/m/data NOT r/m 影响标志: C,O,P,Z,S(其中C与O两个标志会被设为0) NOT指令不影响任何标志位SHR,SHL,SAR,SAL 功能: 移位指令 语法: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL 影响标志: C,P,Z,S,O ROR,ROL,RCR,RCL

汇编语言指令速查表

附录 附录A 常用80x86指令速查表 指令按助记符字母顺序排列,缩写、符号约定如下: (1) 指令中,dst, src表示目的操作数和源操作数。仅一个操作数时,个别处也表示为opr。 (2) imm表示立即数,8/16/32位立即数记作:imm8/imm16/imm32。 (3) reg表示通用寄存器,8/16/32位通用寄存器记作:reg8/reg16/reg32。 (4) mem表示内存操作数,8/16/32等内存操作数记作:mem8/mem16/mem32等。 (5) seg表示段寄存器,CS, DS, SS, ES, FS, GS。 (6) acc表示累加器,8/16/32累加器对应AL/AX/EAX。 (7)OF, SF, ZF, AF, PF, CF分别表示为O, S, Z, A, P, C,相应位置为:字母,根据结果状态设置;?,状态不确定;-,状态不变;1,置1;0,清0;例如:0 S Z ? P -表示:OF清0,AF不确定,CF不变,其它根据结果设置。若该栏空白,则表示无关。 (8)寄存器符号诸如(E)CX, (E)SI, (E)DI, (E)SP, (E)BP和(E)IP等,表示在16地址模式下使用16位寄存器(如CX),或在32地址模式下使用32位寄存器(如ECX)。 (9)周期数表示指令执行所需的CPU时钟周期个数,即执行时间为:周期数/主频(秒)。 (10)诸如(386+)是表示该指令只能用于80386及以后微处理器上。

·252·

附录 ·253·

·254·

附录 ·255·

·256·

汇编指令大全

ORG 0000H NOP ;空操作指令 AJMP L0003 ;绝对转移指令 L0003: LJMP L0006 ;长调用指令 L0006: RR A ;累加器A内容右移(先置A为88H) INC A ; 累加器A 内容加1 INC 01H ;直接地址(字节01H)内容加1 INC @R0 ; R0的内容(为地址) 的内容即间接RAM加1 ;(设R0=02H,02H=03H,单步执行后02H=04H) INC @R1 ; R1的内容(为地址) 的内容即间接RAM加1 ;(设R1=02H,02H=03H,单步执行后02H=04H) INC R0 ; R0的内容加1 (设R0为00H,单步执行后查R0内容为多少) INC R1 ; R1的内容加1(设R1为01H,单步执行后查R1内容为多少) INC R2 ; R2的内容加1 (设R2为02H,单步执行后查R2内容为多少) INC R3 ; R3的内容加1(设R3为03H,单步执行后查R3内容为多少) INC R4 ; R4的内容加1(设R4为04H,单步执行后查R4内容为多少) INC R5 ; R5的内容加1(设R5为05H,单步执行后查R5内容为多少) INC R6 ; R6的内容加1(设R6为06H,单步执行后查R6内容为多少) INC R7 ; R7的内容加1(设R7为07H,单步执行后查R7内容为多少) JBC 20H,L0017; 如果位(如20H,即24H的0位)为1,则转移并清0该位L0017: ACALL S0019 ;绝对调用 S0019: LCALL S001C ;长调用 S001C: RRC A ;累加器A的内容带进位位右移(设A=11H,C=0 ;单步执行后查A和C内容为多少) DEC A ;A的内容减1 DEC 01H ;直接地址(01H)内容减1 DEC @R0 ;R0间址减1,即R0的内容为地址,该地址的内容减1 DEC @R1 ; R1间址减1 DEC R0 ; R0内容减1 DEC R1 ; R1内容减1 DEC R2 ; R2内容减1 DEC R3 ; R3内容减1 DEC R4 ; R4内容减1 DEC R5 ; R5内容减1 DEC R6 ; R6内容减1 DEC R7 ; R7内容减1 JB 20H,L002D;如果位(20H,即24H的0位)为1则转移 L002D: AJMP L0017 ;绝对转移 RET ;子程序返回指令 RL A ;A左移 ADD A,#01H ;A的内容与立即数(01H)相加 ADD A,01H ; A的内容与直接地址(01H内容)相加 ADD A,@R0 ; A的内容与寄存器R0的间址内容相加 ADD A,@R1 ; A的内容与寄存器R1的间址内容相加

汇编语言手册

寄存器与存储器 1. 寄存器功能 . 寄存器的一般用途和专用用途 . CS:IP 控制程序执行流程 . SS:SP 提供堆栈栈顶单元地址 . DS:BX(SI,DI) 提供数据段内单元地址 . SS:BP 提供堆栈内单元地址 . ES:BX(SI,DI) 提供附加段内单元地址 . AX,CX,BX和CX寄存器多用于运算和暂存中间计算结果,但又专用于某些指令(查阅指令表)。. PSW程序状态字寄存器只能通过专用指令(LAHF, SAHF)和堆栈(PUSHF,POPF)进行存取。 2. 存储器分段管理 . 解决了16位寄存器构成20位地址的问题 . 便于程序重定位 . 20位物理地址=段地址* 16 + 偏移地址 . 程序分段组织: 一般由代码段,堆栈段,数据段和附加段组成,不设置堆栈段时则使用系统内部的堆栈。 3. 堆栈 . 堆栈是一种先进后出的数据结构, 数据的存取在栈顶进行, 数据入栈使堆栈向地址减小的方向扩展。 . 堆栈常用于保存子程序调用和中断响应时的断点以及暂存数据或中间计算结果。 .堆栈总是以字为单位存取 指令系统与寻址方式 1. 指令系统 . 计算机提供给用户使用的机器指令集称为指令系统,大多数指令为双操作数指令。执行指令后,一般源操作数不变,目的操作数被计算结果替代。 . 机器指令由CPU执行,完成某种运算或操作,8086/8088指令系统中的指令分为6类: 数据传送,算术运算,逻辑运算,串操作,控制转移和处理机控制。 2. 寻址方式 . 寻址方式确定执行指令时获得操作数地址的方法 . 分为与数据有关的寻址方式(7种)和与转移地址有关的寻址方式(4)种。 . 与数据有关的寻址方式的一般用途: (1) 立即数寻址方式--将常量赋给寄存器或存储单元 (2) 直接寻址方式--存取单个变量 (3) 寄存器寻址方式--访问寄存器的速度快于访问存储单元的速度 (4) 寄存器间接寻址方式--访问数组元素 (5) 变址寻址方式 (6) 基址变址寻址方式 (7) 相对基址变址寻址方式(5),(6),(7)都便于处理数组元素 . 与数据有关的寻址方式中,提供地址的寄存器只能是BX,SI,DI或BP . 与转移地址有关的寻址方式的一般用途: (1) 段内直接寻址--段内直接转移或子程序调用 (2) 段内间接寻址--段内间接转移或子程序调用

8088汇编语言指令

8088指令系统总结 预备知识:符号含意、数据传送原则 符号含意 符号含意 opr 操作数 src 源操作数 dst 目的操作数 mem 存储器 im 立即数 seg 段寄存器 reg 通用寄存器 EA 偏移地址 PA 物理地址 nn直接地址DISP8:8位偏移地址DISP16:16位偏移地址 数据传送原则 口诀数据传送原则 寄段储间互传数,seg、reg、mem之间的数据可以相互传送。 立即只入寄和储。im可入reg、mem 只有寄间互换数,reg之间的数据可以传送。Mem间、seg间不可自传CS立即不可目,CS和立即数不可入,不能当目的操作数 8088指令系统 8088指令系统分六大类 一、数据传送指令 二、算术运算指令 三、逻辑运算与位移指令 四、串操作指令 五、控制与转移指令 六、CPU控制指令 一、数据传送指令 1.通用传送指令 (1)传送指令MOV dst, src功能:dst←src (2)堆栈操作指令人W PUSH src作用:SP←SP-2 ((SP+1)+SP)←src src(reg seg mem) POP dst 作用:dst←((SP+1)+SP)SP←SP-2 dst(reg seg mem)

(3)交换指令XCHG OPR1,OPR2 OPR1←→OPR2 2.累加器传送指令 (1)输入输出指令 256B短格式:直接寻址,64K长格式:直接、间接寻址,PORT为8位口地址输入指令:直接寻址IN AX,PORT IN AL,PORT 间接寻址IN AX,DX IN AL,DX 输出指令:直接寻址OUT AX,PORT OUT AL,PORT 间接寻址OUT AX,DX OUT AL,DX (2)换码指令XLAT AL←(BX+AL)(BX)为mem地址 3.地址传送指令 (1)有效地址传送寄存器 LEA reg16, mem作用:mem的EA→reg16 (2)指针送寄存器和DS指令 LDS reg16, mem32 作用:reg16←mem32的低字高字→DS (3)指针送寄存器和有ES指令 LES reg16, mem32 作用:reg16←mem32的低字高字→ES 4.标志寄存器传送指令 (1)取标志指令:LAHF F的低字节→AH (2)置标志指令:SAHF AH→flag的低字节 (3)标志入栈指令:PUSHF SP-2→SP F→(SP+1):SP (4)标志出栈指令:POPF (SP+1):SP→F SP+2→SP 二、算术运算指令 1.加法类指令(Add)opr-reg mem B/W (1)不带进位加法ADD dst, src dst←dst+src 影响OSZAPC (2)带进位加法ADC dst, src dst←dst+src+CF影响OSZAPC (3)加1指令INC opr opr←opr+1影响OSZP (4)组合十进制调整DAA放在ADD后 (5)非组合十进制调整AAA放在ADC后 原理:2个十进制数相加,可能出现非法数(A到F),需用调整指令,进行加6调整变成合法十进制数。十进制=BCD组合=压缩组合BCD占4位非组合BCD占8位 2 . 减法类指令(substract) (1)减法指令SUB dst, src;dst←dst-src影响标志位OSZAPC (2)带借位减法指令SBB dst, src;dst←dst-src-CF影响标志位

汇编语言常用指令大全解释

常用汇编指令:MOV指令为双操作数指令,两个操作数中必须有一个是寄存器. MOV DST , SRC // Byte / Word 执行操作: dst = src 1.目的数可以是通用寄存器, 存储单元和段寄存器(但不允许用CS段寄存器). 2.立即数不能直接送段寄存器 3.不允许在两个存储单元直接传送数据 4.不允许在两个段寄存器间直接传送信息 PUSH入栈指令及POP出栈指令: 堆栈操作是以"后进先出"的方式进行数据操作. PUSH SRC //Word 入栈的操作数除不允许用立即数外,可以为通用寄存器,段寄存器(全部)和存储器. 入栈时高位字节先入栈,低位字节后入栈. POP DST //Word 出栈操作数除不允许用立即数和CS段寄存器外, 可以为通用寄存器,段寄存器和存储器. 执行POP SS指令后,堆栈区在存储区的位置要改变. 执行POP SP 指令后,栈顶的位置要改变. XCHG(eXCHanG)交换指令: 将两操作数值交换. XCHG OPR1, OPR2 //Byte/Word 执行操作: Tmp=OPR1 OPR1=OPR2 OPR2=Tmp 1.必须有一个操作数是在寄存器中 2.不能与段寄存器交换数据 3.存储器与存储器之间不能交换数据. XLAT(TRANSLATE)换码指令: 把一种代码转换为另一种代码. XLAT (OPR 可选) //Byte 执行操作: AL=(BX+AL) 指令执行时只使用预先已存入BX中的表格首地址,执行后,AL中内容则是所要转换的代码. LEA(Load Effective Address) 有效地址传送寄存器指令 LEA REG , SRC //指令把源操作数SRC的有效地址送到指定的寄存器中. 执行操作: REG = EAsrc 注: SRC只能是各种寻址方式的存储器操作数,REG只能是16位寄存器 MOV BX , OFFSET OPER_ONE 等价于LEA BX , OPER_ONE MOV SP , [BX] //将BX间接寻址的相继的二个存储单元的内容送入SP中 LEA SP , [BX] //将BX的内容作为存储器有效地址送入SP中 LDS(Load DS with pointer)指针送寄存器和DS指令 LDS REG , SRC //常指定SI寄存器。 执行操作: REG=(SRC), DS=(SRC+2) //将SRC指出的前二个存储单元的内容送入指令中指定的寄存器中,后二个存储单元送入DS段寄存器中。 LES (Load ES with pointer) 指针送寄存器和ES指令 LES REG , SRC //常指定DI寄存器 执行操作: REG=(SRC) , ES=(SRC+2) //与LDS大致相同,不同之处是将ES代替DS而已. LAHF( Load AH with Flags ) 标志位送AH指令

汇编指令1

汇编语言指令集 一、数据传输指令 1. 通用数据传送指令. MOV(MOVe) 传送字或字节. MOVS(MOVe String) 串传送指令 MOVSX先符号扩展,再传送. MOVZX先零扩展,再传送. PUSH把字压入堆栈. POP把字弹出堆栈. PUSHA把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈. POPA把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈. PUSHAD把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈. POPAD把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈. BSWAP 交换32位寄存器里字节的顺序 XCHG (eXCHanG)交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数) CMPXCHG比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX ) XADD先交换再累加.( 结果在第一个操作数里) XLAT(TRANSLATE) 字节查表转换. ── BX 指向一张256 字节的表的起点, AL 为表的索引值(0-255,即0-FFH); 返回AL 为查表结果. ( [BX+AL]->AL ) 2. 输入输出端口传送指令. IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} ) OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器) 输入输出端口由立即方式指定时, 其范围是0-255; 由寄存器DX 指定时,其范围是0-65535. 3. 目的地址传送指令. LEA (Load Effective Address)装入有效地址. 例: LEA DX,string ;把偏移地址存到DX. LDS (Load DS with pointer)传送目标指针,把指针内容装入DS. 例: LDS SI,string ;把段地址:偏移地址存到DS:SI. LES (Load ES with pointer)传送目标指针,把指针内容装入ES. 例: LES DI,string ;把段地址:偏移地址存到ES:DI. LFS 传送目标指针,把指针内容装入FS. 例: LFS DI,string ;把段地址:偏移地址存到FS:DI. LGS 传送目标指针,把指针内容装入GS. 例: LGS DI,string ;把段地址:偏移地址存到GS:DI. LSS 传送目标指针,把指针内容装入SS. 例: LSS DI,string ;把段地址:偏移地址存到SS:DI. 4. 标志传送指令. LAHF (Load AH with Flags)标志寄存器传送,把标志装入AH. SAHF (Store AH into Flgs)标志寄存器传送,把AH内容装入标志寄存器. PUSHF (PUSH the Flags)标志入栈. POPF (POP the Flags)标志出栈.

汇编 DEBUG主要 命令 大全 最详细

DEBUG主要命令 DEBUG是为汇编语言设计的一种调试工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。 1.DEBUG程序的调用 在DOS的提示符下,可键入命令: C:>DEBUG [d:][path][文件名][参数1][参数2] 其中文件名是被调试文件的名字,它必须是可执行文件(EXE),两个参数是运行被调试文件所需要的命令参数,在DEBUG程序调入后,出现提示符“-”,此时,可键入所需的DEBUG命令。 2.DEBUG的主要命令 ⑴显示内存单元内容的命令D,格式为: -D [地址] 或-D [范围] 例如,显示指定范围内存单元内容的方法为: -D 100 1FF 18E4:0100 47 06 04 02 38 01 47 06 -06 02 00 02 47 06 08 02 G...8.G.....G... 18E4:0110 02 02 3B 04 02 68 02 00 -4D 20 50 51 56 57 8B 37 ..;..h..M PQVW.7 其中左边为十六进制表示形式,右边为ASCII码表示形式,“.”表示不可显示字符。这里没有指定段地址,D命令自动显示DS段的内容。 ⑵修改内存单元内容的命令E,它有两种格式 1)用给定内容代替指定范围的单元内容,格式为: -E 地址内容表 例如:-E DS:100 F358595A8D,即用F3,58,59,5A,8D五个字节代替内存单元DS:100到DS:104的内容。 2)逐个单元相继地修改,格式为: -E 地址 例如:-E DS:100 18E4:0100 89.78 此命令是将0100单元内容89改为78。78是程序员从键盘输入的。程序员在修改完一个单元后,可按“空格”键继续修改下一单元内容,直至按“回车”键结束该命令。 ⑶检查和修改寄存器内容的命令R,它有三种方式 1)显示CPU内部所有寄存器内容和标志寄存器中的各标志位状态 -R 该命令可显示AX,BX,CX,DX,SP,BP,SI,DI,DS,ES,SS,CS,IP及标志寄存器内容。

汇编语言指令详解大全

汇编语言指令详解大全

助记符指令说明字节 数 周 期 数 (数据传递类指令) MOV A,Rn 寄存器传送到累加器 1 1 MOV A, direct 直接地址传送到累加 器 2 1 MOV A,@Ri 累加器传送到外部 RAM(8 地址) 1 1 MOV A,#data 立即数传送到累加器 2 1 MOV Rn,A 累加器传送到寄存器 1 1 MOV Rn, direct 直接地址传送到寄存 器 2 2 MOV Rn, #data 累加器传送到直接地 址 2 1 MOV direct, Rn 寄存器传送到直接地 址 2 1

MOV direct, direct 直接地址传送到直接 地址 3 2 MOV direct, A 累加器传送到直接地 址 2 1 MOV direct, @Ri 间接RAM 传送到直接 地址 2 2 MOV direct, #data 立即数传送到直接地 址 3 2 MOV @Ri,A 直接地址传送到直接 地址 1 2 MOV @Ri, direct 直接地址传送到间接 RAM 2 1 MOV @Ri, #data 立即数传送到间接 RAM 2 2 MOV DPTR, #data16 16 位常数加载到数 据指针 3 1 MOVC A, @A+DPTR 代码字节传送到累加 器 1 2

MOVC A,@A+PC 代码字节传送到累加 器 1 2 MOVX A,@Ri 外部RAM(8 地址)传 送到累加器 1 2 MOVX A,@DPTR 外部RAM(16 地址)传 送到累加器 1 2 MOVX @Ri,A 累加器传送到外部 RAM(8 地址) 1 2 MOVX @DPTR,A 累加器传送到外部 RAM(16 地址) 1 2 PUSH direct 直接地址压入堆栈 2 2 POP direct 直接地址弹出堆栈 2 2 XCH A,Rn 寄存器和累加器交换 1 1 XCH A, direct 直接地址和累加器交 换 2 1 XCH A, @Ri 间接RAM 和累加器交 换 1 1

单片机汇编语言指令查表

目录 表1 寻址方式与相应的寻址空间 (2) 1.1数据传送指令MOV (2) 1.2程序存储器取数据指令MOVX,MOVC (3) 1.3 数据交换指令XCH,XCHD,SWAP (3) 1.4 逻辑运算指令ANL,ORL(按位进行) (4) 续表1.4 逻辑运算指令XRL CLR CPL RL RLC RR RRC(按位进行) (5) 1.5 控制转移指令LJMP AJMP SJMP JMP JZ JNZ CJNE (6) 续表1.5 控制转移指令DJNZ LCALL ACALL RET RETI NOP (7) 1.6 布尔处理(位操作)指令CLR SETB CPL ANL ORL (8) 续表1.6 布尔处理(位操作)指令JC JNC JB JNB JBC (9) 1.7堆栈操作指令PUSH POP (10) 2.MCS-51系列单片机算术运算指令表ADD ADDC SUBB INC DEC MUL DIV DA (10)

表1 寻址方式与相应的寻址空间 1.1数据传送指令MOV 方式 利用的变量 使用的空间 寄存器 R0∽R7,A ,B ,CY ,DPTR 直接寻址 direct 片内RAM 低128字节特殊功能寄存器SFR 寄存器间址 @Ro ,@R1 SP @R0,@R1,@DPTR 片内RAM 片外RAM 立即数 #data 程序存储器 基址加变址 @A+PC @A+DPTR 程序存储器 相对寻址 PC+rel 程序存储器 位寻址 bit 片内RAM 的20H ∽2FH 部分SFR 目的操作数 汇编指令 机器码 功能 字节数 机器 周期 A 累加器 立即数送A MOV A ,#data 74H data data 传至A 2 1 内部RAM 或SFR 内容送A MOV A ,direct E5H direct (direct)传至A 2 1 寄存器内容送A MOV A ,Rn (n=0∽7) E8H ∽EFH 11101rrr (Rn)传至A 1 1 内部RAM 内容送A MOV A ,@Ri (i=0,1) 1110011i ((Ri))传至A 1 1 Direct 内部RAM 或SFR 立即数送内部RAM 或SFR MOV direct ,#data 75H direct data data 传至direct 3 2 内部RAM 和SFR 直接直接传送 MOV direct ,direct 85H direct direct (direct)传至direct 3 2 累加器内容送内部RAM 或SFR MOV direct ,A F5H direct (A)传至direct 2 1 寄存器内容送内部RAM 或SFR MOV direct ,Rn (n=0∽7) 10001rrr direct (Rn)传至direct 2 2 内部RAM 内容送内部RAM 或SFR MOV direct ,@Ri (i=0,1) 1000011i direct ((Ri))传至direct 2 2 Rn 寄存器 立即数送寄存器 MOV Rn,#data (n=0∽7) 01111rrr data data 传至Rn 2 1 内部RAM 或SFR 内容送寄存器 MOV Rn,direct (n=0∽7) 10101rrr direct (direct)传至Rn 2 2 累加器内容送寄存器 MOV Rn,A (n=0∽7) 11111rrr (A)传至Rn 1 2 @Ri 内部RAM 立即数送内部RAM MOV @Ri,#data (i=0,1) 0111011i data data 传至(Ri) 2 1 内部RAM 或SFR 内容送内部RAM MOV @Ri,direct (i=0,1) 1010011i direct (direct)传至(Ri) 2 2 累加器内容送内部RAM MOV @Ri,A (i=0,1) 1111011i (A)传至(Ri) 1 1 DPTR 16位立即数传送指令 MOV DPTR,#data16 90H dataH dataL data16传至DPTR 3 2

相关文档
最新文档