8086指令系统
通用寄存器:数据寄存器:累加器AX,基址寄存器BX,计数器CX,数据寄存器DX变址寄存器:源地址寄存器SI,目的变址寄存器DI指针寄存器:基址指针BP,堆栈指针SP段寄存器:代码段寄存器CS,堆栈段寄存器SS,数据段寄存器DS,附加段寄存器ES标志寄存器:FLAGS,指令指针:IP数据寄存器8086有4个16位数据寄存器:AX,BX,CX,DX;它们都可以分为两个独立的8位寄存器:AH/AL,BH/BL,CH/CL,DH/DL;对其中的某8位操作,并不影响另外对应8 位寄存器的数据.数据寄存器是通用的,用来存放计算结果和操作数, 但每个寄存器又有它们各自专用目的,主要是:AX称为累加器,使用程度最高,用于算术,逻辑运算及与外设传送信息等;BX称为基地址寄存器,常用做存放存储器的地址;CX称为计数器,作为循环和串操作等指今中隐含的计数器;DX称为数据寄存器,常用来存放双字节长数据的高16位,或存放外设端口地址.指针及变址寄存器指针及变址寄存器包括SI,DI,BP,SP四个16位寄存器,常用于存储器寻址时提供地址.SI源变址寄存器,DI 目的变址寄存器,一般与DS联用确定数据段中某一存储单元地址.SP堆栈指针寄存器,指示栈顶的偏移地址;BP基址指针寄存器, 表示堆栈段中的基地址.IP16位指令指针寄存器,指示代码段中指令的偏移地址,它与代码段寄存器CS 联用,以确定下一条指令的物理地址.处理器利用CS:IP取得下一条要执行的指令,然后修改IP的内容,使之指向下一条指令的存储器地址.标志寄存器(FLAGS) 也称为状志标志寄存器PSW0 CF(Carry Flag) 进位标志12 PF(Parity Flag)零标志34 AF(Auxiliary Carry Flag)辅助进位标志56 ZF(Zero Flag)零标志7 SF(Sign Flag)符号标志:运算结果最高有效位的状态就是符号位的状态.8 TF(Trap Flag)陷井标志9 IF(Interrupt-enable Flag)中断允许标志10 DF(Direction Flag)方向标志11 OF(Overflow Flag)溢出标志12131415状态标志:CF,ZF,SF,PF,OF,AF控制标志:DF,IF,TF8086的字长是16位的,但其地址线是32位的.8086处理器将1M存储器空间分成许多逻辑段(Segment),每个段的最大限为16KB. 这样,每个存储单元就可以用"段地址:段内偏移地址"表达其准确的物理位置."段地址:偏移地址"的形式称为逻辑地址 .将逻辑地址中的段地址左移4位(这是对二进制而言,若是十六进制,只要左移一位),加上偏移地址就得到20位物理地址. 例如逻辑地址"1460H:100H"表示物理地址14700H, 同一个物理地址可以有多个逻辑地址形式.8位通用寄存器AH/AL/BH/BL/CH/CL/DH/DL16位的通用寄存器AX/BX/CX/DX.DST 目的操作数SRC 源操作数一. 通用数据传送指令1. 传送指令MOV (move)格式:MOV DST,SRC操作:(DST)←(SRC) 将原操作数(字节或字)传送到目的地址。
操作数要求:目的操作数和源操作数不能同时用存储器寻址方式,这个限制适用于所有指令。
对标志位的影响:不影响标志位。
指令的特殊要求:目的操作数DST和源操作数SRC不允许同时为段寄存器;不能同时为存储器操作数,源操作数SRC立即数方式,目的操作数DST不能是段寄存器,IP.CS不能作为目标操作数。
2. 进栈指令PUSH (push onto the stack)出栈指令POP (pop from the stack)格式:PUSH SRC;POP DST操作:PUSH指令在程序中常用来暂存某些数据,而POP指令又可将这些数据恢复。
PUSH SRC (SP)←(SP)-2 ;(SP)←(SRC)POP DST (DST)←((SP));(SP)←(SP)操作数要求:push 和pop指令不能使用立即数寻址方式。
对标志位的影响:PUSH 和POP指令都不影响标志位。
指令的特殊要求:PUSH 和POP指令只能是字操作,因此,存取字数据后,SP的修改必须是+2 或者-2;POP指令的目的操作数DST不允许是CS寄存器;3. 交换指令XCHG (exchange)格式:XCHG OPR1,OPR2操作:(OPR1)←→(OPR2)操作数要求:一个操作数必须在寄存器中,另一个操作数可以在寄存器或存储器中。
指令对标志位的影戏:不影响标志位。
指令的特殊要求:不允许使用段寄存器。
二. 累加器专用传送指令4. 输入指令IN (input)输出指令OUT (output)格式:IN ac,port port≤0FFHIN ac,DX port>0FFHOUT port,ac port≤0FFHOUT DX,ac port>0FFH操作:对8086及其后继机型的微处理机,所有I/O端口与CPU之间的通信都由输入输出指令IN和OUT 来完成。
IN指令将信息从I/O输入到CPU,OUT指令将信息从CPU输出到I/O端口,因此,IN和OUT 指令都要指出I/O端口地址。
IN ac,port port≤0FFH (AL)←(port)传送字节或(AX)←(port+1,port)传送字IN ac,DX port>0FFH (AL)←((DX))传送字节或(AX)←((DX)+1,(DX))传送字OUT port,ac port≤0FFH (port)←(AL)传送字节或(port+1,port)←(AX)传送字OUT DX,ac port>0FFH (DX)←(AL)传送字节或((DX)+1,(DX))←(AX)传送字对标志位的影响:不影响标志位。
指令的特殊要求:只限于在AL或AX与I/O端口之间传送信息。
传送16位信息用AX,传送8位信息用AL,这取决于外设端口的宽度。
5. 换码指令XLAT (translate)格式:XLAT opr 或XLAT操作:这条指令根据AL寄存器提供的位移量,将BX指示的字节表格中的代码换存在AL中。
BX代表表格首地址,AL为表内位移量,BX+AL偏移地址送给AL。
(AL)←((DS)*10H+(BX)+(AL))对标志位的影响:不影响标志位。
指令的特殊要求:所建字节表格的长度不能超过256字节,因为存放位移量的是8位寄存器AL。
opr为表格的首地址,因为opr所表示的偏移地址已存入BX寄存器,所以opr在换码指令中可有可无,有则提高程序的可读性。
三. 地址传送指令6. 有效地址传送器LEA (load effective address)格式:LEA reg,src操作:LEA指令把源操作数的有效地址送到指定的寄存器,这个有效地址是由src选定的一种存储器寻址方式确定的。
操作数要求:各种存储器寻址方式。
对标志位的影响:不影响标志位。
指令的特出要求:指令中reg不能是段寄存器;7. 指针送寄存器和DS LDS (load DS with point)指针送寄存器和ES LES (load ES with point)格式:LDS reg,srcLES reg,src操作:LDS和LES指令把确定内存单元位置的偏移地址送寄存器,段地址DS或ES。
这个偏移地址和段地址(也称地址指针)是由src指定的两个相继字单元提供的。
LDS reg,src (reg)←(src) (DS)←(src+2)LES reg,src (reg)←(src) (ES)←(src+2)操作数要求:src必须为存储器寻址方式对标志位的影响:不影响标志位。
指令的特殊要求:指令中REG不能是段寄存器;四. 标志寄存器传送指令8. 标志寄存器的低字节送AH LAHF (load AH with FLAGS)格式:LAHF操作:(AH)←(FLAGS)0-7对标志位的影响:不影响标志位9. AH送标志寄存器低字节SAHF(store AH into FLAGS)格式:SAHF操作:(FLAGS)0-7←(AH)对标志位的影响:由装入值来确定标志位的值。
10. 标志进栈PUSHF (push the flags)格式:PUSHF操作:(SP)←(SP)-2 ((SP)+1,(SP))←(FLAGS)0-15对标志位的影响:不影响标志位。
11. 标志出栈POPF (pop the FLAGES)格式:POPF操作:(FLAGS)0-15←((SP)+1,(SP)) (SP)←(SP)+2对标志位的影响:由装入值来确定标志位的值。
[算术指令]一. 加法指令12. 加法指令ADD (addition)格式:ADD dst,src操作:(dst)←(src)+(dst)操作数要求:他们两个操作数不能同时为存储器寻址。
即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。
对标志位影响:SF=1 加法结果为负数(符号位为1)SF=0 加法结果为正数(符号位为0)ZF=1 加法结果为零ZF=0 加法结果不为零CF=1 最高有效位向高位有进位CF=0 最高有效位向高位无进位OF=1 两个同符号数相加(正数+正数或负数+负数),结果符号与其相反。
OF=0 两个不同符号数相加,或同符号数相加,结果符号与其相同。
13. 带进位加法指令ADC (add with carry)格式:ADD dst,src操作:(dst)←(src)+(dst)+CF操作数要求:他们两个操作数不能同时为存储器寻址。
即除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。
对标志位的影响:SF=1 加法结果为负数SF=0 加法结果为正数ZF=1 加法结果为零ZF=0 加法结果不为零CF=1 最高有效位向高位有进位CF=0 最低有效位相高位无进位OF=1 两个同符号数相加,结果符号与其相反,OF=0 两个同符号数相加,或同符号相加,结果符号与其相同14. 加1指令INC (increament)格式:INC opr操作:(opr)←(opr)+1操作数要求可以使用除立即数方式外的任何寻址方式对标志位的影响:SF=1 加法结果为负数SF=0 加法结果为正数ZF=1 加法结果为零ZF=0 加法结果不为零OF=1 两个同符号数相加,结果符号与其相反,OF=0 两个同符号数相加,或同符号相加,结果符号与其相同。
二. 减法指令15. 减法指令SUB (subtract)格式:SUB dst,src操作:(dst)←(dst)-(src)操作数要求:他们两个操作数不能同时为存储器寻址。
04 8088(8086)的指令系统
INC OPRD
操作数:通用寄存器、存储器 (不能是段寄存器或立即数) 执行的操作:OPRD OPRD + 1
功能: 用于在循环中修改地址指针及循环次数等。
注:该指令影响标志位
例: INC BX INC byte ptr [SI]
1. 先将SP所指单元内容 送至AL, 然后 SP+1SP ;
2. 再SP所指单元内容送 至AH, 然后 SP+1 SP
例:MOV AX,5678H POP AX
(3) 交换指令 XCHG OPRD1, OPRD2
在寄存器间或寄存器与存储器间交换信息(不允许使用段寄存器)。
源操作数: 寄存器、存储器 目的操作数:寄存器、存储器 执行的操作:( OPRD1) (OPRD2 )
DS=1000h
buffer 10100h 00 02 00 20
0100h BX
(2) LDS 把源操作数指定的内存的4个相继字节的内容送至指定寄存器及DS中
LDS REG, SRC
(REG) (SRC)
(DS) (SRC+2)
目的操作数
源操作数
(16位通用寄存器) (内存操作数)
• 该指令完成一个32位地址指针的传送; • 该指令通常指定 SI 作寄存器 REG。
• CPU内部寄存器之间的数据传送(除CS,IP外) MOV AL,BL MOV DX, DI MOV SI, BP MOV DS, BX MOV AX,DX
• 立即数传送到CPU内部通用寄存器组(AX,BX,CX,DX,BP,SP,DI,SI)
MOV CL, 4 MOV DX, 03FFH MOV DI, 04BFH
DST+SRC+C
8086指令系统总结
8086指令系统总结8086是一种x86架构的微处理器,由Intel公司于1978年推出。
它是16位的,拥有20位的物理寻址能力,可以访问1MB的内存空间。
8086指令系统是其所支持的一系列指令集合,下面将对8086指令系统进行详细总结。
数据传输指令是8086指令系统中的基础指令之一,用于将数据从一个位置传输到另一个位置。
其中包括mov指令、xchg指令、push指令和pop指令等。
mov指令用于将数据从一个存储位置复制到另一个存储位置;xchg指令用于交换两个存储位置中的数据;push指令用于将数据压入栈顶;pop指令用于将栈顶的数据弹出。
算术运算指令是用于进行各种算术运算的指令。
8086支持包括加法、减法、乘法和除法等多种算术运算指令。
例如,add指令用于将两个操作数相加,sub指令用于将第二个操作数从第一个操作数中减去,mul指令用于将两个操作数相乘,div指令用于将第一个操作数除以第一个操作数,并将结果保存在指定的寄存器中。
逻辑运算指令用于进行逻辑运算,包括与、或、非、异或等运算。
例如,and指令用于对两个操作数进行按位与运算,or指令用于对两个操作数进行按位或运算,not指令用于对一个操作数进行按位非运算,xor指令用于对两个操作数进行按位异或运算。
控制转移指令用于控制程序的执行流程。
包括无条件转移指令、条件转移指令和循环指令。
无条件转移指令用于无条件地跳转到指定的地址,例如jmp指令;条件转移指令用于根据一些条件是否成立来进行跳转,例如je指令(跳转到指定地址,如果上一次比较操作相等);循环指令用于循环执行指定的指令块,例如loop指令。
I/O指令用于进行输入输出操作,包括从外部设备读取数据和将数据写入外部设备。
例如,in指令用于将输入端口的数据读取到指定的寄存器中,out指令用于将指定的寄存器中的数据写入到输出端口。
此外,8086还支持一些特殊的指令,如访问标志寄存器的指令,控制指令(如hlt指令、nop指令)和字符串指令(如movsb指令、cmpsb指令)等。
8086微处理器-指令系统思维导图,脑图
8086微处理器指令系统数据传送数据传送指令可完成寄存器与寄存器之间、寄存器与存储器之间以及寄存器与I/O 端口之间的字节或字传送,它们共同的特点是不影响标志寄存器的内容通用数据传送指令MOV 传送指令格式: MOV 目标,源指令功能:将源操作数(一个字节或一个字)传送到目标操作数。
源操作数可以是8/16位通用寄存器、段寄存器、存储器中的某个字节/字或者是8/16 位的立即数。
堆栈操作指令后进先出的规则存取信息堆栈指针信息存入堆栈时,堆栈指针将自动减量,并将信息存入堆栈指针所指出的存储单元当需要从堆栈中取出信息时,也将从堆栈指针所指出的存储单元读出信息,并自动将堆栈指针增量堆栈指针始终指向堆栈中最后存入信息的那个单元栈顶不断移动、动端堆栈区的另一端则是固定不变的栈底PUSH 入栈指令格式: PUSH 源指令功能:将源操作数压入堆栈。
源操作数可以是16 位通用寄存器、段寄存器或者是存储器中的数据字。
P38 例 2.12POP 出栈指令格式: POP 目标指令功能:将堆栈中当前栈顶和次栈顶中的数据字弹出送到目标操作数。
目标操作数可以是16 位通用寄存器、段寄存器或者是存储单元。
P39 例 2.13XCHG 交换指令1格式: XCHG 目标,源指令功能:将源操作数与目标操作数(一个字节或一个字)相互交换位置。
源操作数可以是通用寄存器或存储单元。
目标操作数只允许是通用寄存器。
P39 例 2. 14XLAT 换码指令2目标地址传送指令这是一类专用于传送地址码的指令,可用来传送操作数的段地址或偏移地址LEA 有效地址送寄存器指令格式: LEA 目标,源指令功能:将源操作数的有效地址EA 传送到目标操作数。
源操作数必须是存储器操作数。
目标操作数必须是16位通用寄存器。
LDS 指针送寄存器和DS指令格式: LDS 目标,源指令功能:从源操作数所指定的存储单元中取出某变扯的地址指针(共4 个字节),将其前两个字节(即变量的偏移地址)传送到目标操作数,后两个字节(即变量的段地址)传送到DS 段寄存器中。
微机原理5_8086指令系统08
• 指令中的操作数:
– 可以是一个具体的数值 – 可以是存放数据的寄存器 – 或指明数据在主存位置的存储器地址
6
双操作数指令
MOV dst, src ; (dst) (src) ↑ ↑ ↑ 助记符 目的 源操作数 操作数 例: MOV AH,BL MOV AX,1234H
ADD dst, src ; (dst) (dst)+(src) ↑ ↑ ↑ 助记符 目的 源操作数 操作数 例: ADD AL,36H ADD BX,CX 大多数运算型指令都是双操作数指令,对这种指令, 有的机器(大中型)使用“三地址”指令:除给出参加 运算的两个操作数外,还要指出运算结果的存放地址 7
18
寄存器寻址
19
特 点
(1) 操作数就在寄存器中,不需要访问存
储器来取得操作数(指令执行时,操作就在 CPU的内部进行),因而执行速度快。
(2)寄存器号比内存地址短 * 在编程中,如有可能,尽量使用这种寻址 方式的指令。 * 寄存器寻址方式既可用于源操作数,也可 用于目的操作数,还可以两者都用于寄存器寻 址方式(如 MOV BX , AX )
物理地址 = 16d (DS) +
BP (SS)
(SI)
(DI)
28
物理地址 = 16d (SS) + (BP)
例:
MOV AX, [BX] MOV ES:[BX] , AX MOV DX, [BP] • MOV AX , [BX] ;
设 ( DS) = 2000H ,(BX) = 1000H PA =20000H + 1000H =21000H 指令的执行结果为: (AX) = 50A0H *指令中也可以通过“段跨越前缀”取 得其他段中的数据, 例如: MOV AX,ES: [BX] PA = 16d (DS) + (BX) PA = 16d (ES) + (BX) PA = 16d (SS) + (BP)
第三章 8086的寻址方式和指令系统[3-4]
§3-3 8086的指令系统
3、循环控制指令(Iteration Control)
通常的循环控制
MOV CX, N ; N为循环次数 BEGIN: …. …. …. DEC CX JNZ BEGIN 用LOOP BEGIN替换
循环体
有了循环控制指令,上面程序简化为: MOV CX, N BEGIN: ……
单字节指令,总是被安排在中断服务程序的出口处。
任何中断服务程序不管是外部中断引起的,还是内部中断引起的 , 最后都要
用IRET返回。
举例:
主程序: CODE START: SEGMENT ASSUME CS:CODE, DS:CODE …… STI . . . ENDS END START 中断子程序: …… STI . . . CLI … STI IRET
微型计算机原理与接口技术
第 8讲 佘青山
86919130 qsshe@
There’s always more to learn, and there are always better ways to do what you’ve done
( 1 )无符号数比较测试指令中,指令助记符中的“ A”是英文 Above的缩写, 表示“高于”之意,“B”是英文Below的缩写,表示“低于”之意;
(2)带符号数比较测试指令中,指令助记符中的“G”(Great than)表示大于, “L”(Less than)表示小于。
12:16
17
§3-3 8086的指令系统
24
CODE
12:16
§3-3 8086的指令系统
6类指令系统:
数据传送指令 算术运算指令 逻辑运算和移位指令 字符串处理指令
微机原理与接口技术 (第三版)电子工业出版社 第03章 8086的指令系统
4、寄存器间接寻址(Register indirect addressing) 内存单元的逻辑偏移地址通过寄存器 间接给出。 例: MOV SI , 61A8H MOV DX , [SI]
5、基址/变址寻址(Based/Indexed addressing) 位移量是一带符号的16位16进制数。当 使用BX或BP寄存器时,称基址寻址;使用SI 或DI寄存器时,称变址寻址。 例: MOV CX , 36H[BX] MOV -20[BP] , AL
2、MOV数据传送指令 其格式为: MOV 目的操作数,源操作数 • 目的操作数和源操作数均可采用不同的寻 址方式, • 两个操作数的类型必需一致。
二、寻址方式介绍பைடு நூலகம்
1.立即寻址(Immediate addressing) 操作数就在指令中,紧跟在操作码后面, 作为指令一部分存放在内存的代码段中,这 种操作数称为立即数。 例: MOV AX , 34EAH MOV BL , 20H
3)、段间直接转移 JMP far PTR 目标地址 4)、段间间接转移 JMP WORD PTR[BX][SI]
2、条件转移指令
1)、单条件转移指令 ① JC ② JNC ③ JE/JZ ④ JNE/JNZ ⑤ JS ⑥ JNS ⑦ JO ⑧ JNO ⑨ JP/JPE ⑩ JNP/JPO ;CF标志为1,则转移 ;CF标志为0,则转移 ;ZF标志为1,则转移 ;ZF标志为0,则转移 ;SF标志为1,则转移 ;SF标志为0,则转移 ;OF标志为1,则转移 ;OF标志为0,则转移 ;PF标志为1,则转移 ;PF标志为0,则转移
3、目标地址传送指令
这类指令有: 1)LEA 有效地址传送到寄存器 2)LDS 装入一个新的物理地址 3)LES 装入一个新的物理地址
8086指令系统一览表
RCR op1, 1 带进位位的循环右移 RCR op1, CL
reg mem reg mem
串 MOVSB 操 作 MOVSW 类
((DI)) ← ((SI)) (SI) ← (SI)±1, (DI) ← (DI)±1 ((DI)) ← ((SI)) (SI) ← (SI)±2, (DI) ← (DI)±2
SAR op1, 1 算术右移 SAR op1, CL
ROL op1, 1 循环左移 ROL op1, CL
ROR op1, 1 循环右移 ROR op1, CL
reg mem mem, reg reg, mem reg, reg reg, imm mem, imm acc, imm reg, mem reg, reg reg, imm mem, imm acc, imm reg mem reg mem
9+22/rep 不重复:15 1 重复:
9+15/rep 1 不重复:15 重复:
9+15/rep
2
1
2
1
REPNE/REP (CX)=0 或(ZF)=1 退出重复,否则
NZ
(CX)←(CX)-1 并执行其后的串指令
ቤተ መጻሕፍቲ ባይዱ
string_instruc
控 JMP SHORT 无条件转移 制 op1 转 JMP NEAR 移 PTR op1 类 JMP FAR
reg mem
PTR op1
JMP WORD
PTR op1
JMP DWORD
PTR op1 JZ/JE op1 JNZ/JNE op1 JS op1
ZF=1 则转移 ZF=0 则转移 SF=1 则转移
JNS op1
003_微机原理-指令系统_2
MOV DS, AX
不影响标志位
3.3 指令系统—换码指令
指令书写格式: XLAT
指令执行的操作:
(AL)←((DS:BX+AL)) 查表操作,将BX指定的缓冲区中、AL指定的位移处的一个字节数 据取出赋给AL
指令说明
操作数隐含使用基地址寄存器BX与AL寄存器 换码指令执行前,在主存建立一个字节量表格,内含要转换的目 的码字,表格首地址存放于BX,AL存放相对表格首地址的位移量 换码指令执行后,指令将AL寄存器的内容转换为目标码字,因为 偏移量AL为8位,表格长度≤256字节 不影响标志位
数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令
控制转移指令
处理器控制指令
3.3 指令系统-通用数据传送指令
指令书写格式: MOV dst, src
指令执行的操作:(dst)←(src) 指令说明
操作数类型:立即操作数,寄存器操作数,存储器操作数 立即操作数不能作为目的操作数DST 错误:MOV 30H, AL 两个操作数也不能同时为存储器操作数 错误: MOV [DI+100H], [SI+200H]
dst为目的操作数,操作数类型可为寄存器操 作数或存储器操作数 cnt为移位次数,可为立即数1,或由寄存器 CL指定 SHL、SHR和SAL指令影响标志位CF和OF, cnt=1时,SHL与SAL移位后的最高位和CF不 同,则OF=1;SHR,OF=移位前最高位 SAR指令影响标志位CF、OF、PF、SF、ZF, AF不确定;
; 测试AL中数据的奇、偶
3.3 指令系统-移位指令
逻辑左移指令: SHL dst, cnt 算术左移指令: SAL dst, cnt
8086指令系统总结
8086指令系统总结学习微处理器及其程序设计,必须掌握微处理器的指令系统。
本章以 8086 微处理器为例介绍微型计算机的指令系统,包括指令格式、寻址方式和各类指令功能。
要明确各种寻址方式的区别和特点,掌握有效地址和物理地址的计算方法,要正确使用指令,掌握各类指令的功能、对标志位的影响和使用上的一些特殊限制。
能够编写小汇编程序,初步掌握汇编程序的编写和调试方法。
本章的重点难点内容是: 8086 的指令格式及寻址方式, 8086 的常用指令和8086 指令前缀的使用。
下面我们分别进行总结:一.8086寻址方式(1)操作数是数字,指令中立即写出数字------------立即数寻址MOV AX,1234H 解释此句意义(2)操作数是寄存器内容,指令中写出寄存器的符号---------寄存器寻址MOV AX,BX(3)操作数是存储单元内容,用括号括出存储单元有效地址-----直接寻址MOV AX,[1234H]MOV AX,ES:[1234H](4)操作数是存储单元内容,用括号括出寄存器或其表达式,寄存器或其表达式的值为存储单元有效地址-------------间接寻址MOV AH,[BX]MOV AX,ES:[SI]MOV AL,[BX+SI+5]===5[BX+SI]===5[BX][SI]二.8086指令系统1.数据传送指令(一)通用传送指令(1)MOV指令指令格式:MOV 目,源功能:将源操作数传送给目标操作数。
(2)堆栈操作指令进栈指令:PUSH格式:PUSH 源功能:将源操作数压入堆栈。
例:用堆栈指令完成上例的功能。
MOV AX,3000HMOV DS,AX ;段寄存器填充MOV SI,0100H ;基本指令执MOV DI,2000H ;行前的初值MOV CX,50NT:PUSH [SI] ;程序从这POP [DI] ;开始设计INC SIINC SIINC DIINC DILOOP NTMOV AH,4CHINT 21H(3)交换指令 XCHG格式:XCHG 目,源功能:源和目标中的内容交换。
第3章 8086指令系统(最后有练习题)
开 始
8086CPU的指令系统的基本指令
包括数据传送类指令、算术运算类指令、 位操作类指令、串操作类指令、控制转移 类指令、处理机控制类指令。后几节将分 别介绍这些指令的语句格式和功能。
3.1 8086的寻址方式
3.1.1 数据的寻址方式 3.1.2 程序转移地址的寻址方式 3.1.3 对端口的寻址方式
3.1.2 程序转移地址的寻址方式
用来确定转移指令及CALL指令的转向地址。
段内寻址
段内直接寻址 段内间接寻址 段间直接寻址 段间间接寻址
段间寻址
段内:转移指令与转向的目标指令在同一代码段 中,(CS)不变。
段间:转移指令与转向的目标指令在两个代码段中, (CS) 变化。
表示转移距离(称为位移量)的操作符:
返回本节
2 . 寄存器寻址
寄存器寻址方式的操作数在指令指明的寄 存器中。 汇编格式:R ,其中R表示寄存器名。 功能:操作数直接存放在寄存器R中。 例如:MOV AL,BL
【例3-2】下列程序执行后,(AX)=?,
(BX)=?
MOV AX,1234H
MOV BX,5678H
ADD AX,BX 执行:1234H→AX 5678H→BX (AX)+(BX)→AX 执行后:(AX)=68ACH,(BX)=5678H
3 . 直接寻址
特点:操作数在内存中。 汇编格式:①含有变量的地址表达式。 ②段寄存器名:[EA] 。 功能:指令下一字单元的内容是操作数的偏 移地址EA。 图形表示:
【例3-3】
寄存器和存储器内容为:(AX)=1212H, (DS)=3000H,(32000H)=45H, (32001H)=46H。 执行指令:MOV AX ,[2000H] 问执行后:(AX)=? Step1:计算地址DS*16+2000H=32000H Step2:找内容(32000H),(32001H) 所以执行后:(AX)=4645H
