计原与汇编4.ppt
《计原与汇编4.ppt》由会员分享,可在线阅读,更多相关《计原与汇编4.ppt(119页珍藏版)》请在三一文库上搜索。
1、指令:规定计算机执行某种操作的指示和命令。 指令系统:一台计算机的所有指令的集合。,一、 指令格式,指令的基本格式:,设计指令格式包括:指令字长度、操作码字段结构和地址码字段结构。,第四章 指令系统,(二)操作码结构 操作码:指令中表示机器操作性质和种类的部分。 操作码长度:决定了指令系统中完成不同操作的指 令条数。 操作码设计方法: 1. 固定长度操作码 2. 可变长度操作码(扩展操作码),(一)指令字长度 指令字长度即一条指令中包含的二进制代码的位数。,(三)地址码结构 地址码结构包括: 指令中需要几个地址指令格式; 地址如何给出寻址方式; 地址码长度 指令格式分类:,格式,(1)四地址指
2、令,意义:(A1) OP (A2) A3 (A4) 下一条指令地址,(2)三地址指令,格式,意义:(A1) OP (A2) A3 (PC) 下一条指令地址 (3)二地址指令 格式,意义:(A1) OP (A2) A2 (PC) 下一条指令地址,(4)一地址指令,格式:,意义:单操作数指令 OP(A)A 双操作数指令 (AX) OP (A)AX 缩短指令长度的方法: 结果存放在目的操作数地址中。 用CPU中的寄存器隐含一个OP数。 把地址隐含在寄存器中。,(5)零地址指令,格式,用于:空操作指令、停机指令等。 堆栈指令。,OP,(四)指令助记符和机器指令代码,二、指令格式举例,1Intel 80
3、86指令格式,2MIPS指令格式,寻址方式:寻找所要处理的指令或操作数地址 的各种方法。,三、寻址方式,1、指令寻址方式:顺序寻址方式和跳转寻址方式,2、操作数寻址方式 (一)隐含寻址 某个操作数(或操作数地址)隐含在某个通用寄存器(或指定的存储单元)中。 例:MUL OPR,三、寻址方式,(二)立即寻址 指令的地址码部分是操作数本身。,例:MOV AX,8,(三)寄存器寻址 指令的地址码字段直接给出寄存器编号。,(四)直接寻址 指令的地址码部分给出操作数的有效地址。,例:MOV AX,BX,(五)间接寻址 指令的地址码部分给出存放操作数地址的存储单元的地址(简称:地址的地址)。,(六)寄存器
4、间接寻址 指令地址码部分给出寄存器地址,操作数地址 在指定的寄存器中。,(七)变址寻址 指定某寄存器作为变址寄存器,指令的地址码部分给出一个形式地址,变址寄存器的内容与形式地址相加为操作数的有效地址。,(八)基址寻址 指令中的形式地址与基址寄存器的内容之和,作 为操作数有效地址。,(九)相对寻址 程序计数器PC的当前内容与指令地址码部分给出的形式地址相加做为操作数的地址。,(十)堆栈寻址 操作数地址由堆栈指针SP指定。,四、 8086寻址方式示例,1、8086/8088的CPU结构,(1)执行部件(EU- Execution Unit ):从指令队列中取出指令,完成指令规定的操作。(包括:16
5、位ALU、通用R组、暂存器、标志R、EU控制器、16位数据通路)。 (2)总线接口部件(BIU-Bus Interface Unit):完成CPU与主存或外设之间的数据传送。 即完成:从主存预取后续指令送到指令队列中;从主存取操作数,传送给EU执行指令(或反向传送)。 (包括:一组段R、指令指针、6字节指令队列、20位总线地址形成部件、总线控制逻辑)。,8086/8088主存物理地址的形成:,段:主存连续空间。8086的不论程序还是数据都是按段成组存放的。 段长度 64KB。 段基址:段的首址。 20bits, 低4位为0。 段寄存器:存放对应段的高16位地址(段基值)。 主存物理地址形成:
6、(段寄存器)*16 + 偏移量 0 H 段基址 + H 偏移 H 20位内存地址,2、8086/8088CPU中的寄存器,( 1 ) 段寄存器:指示相应段的首址的高16位(段基值) 主存单元的逻辑地址 = 段基值:段内偏移量 主存物理地址 = (段寄存器)*16 + 段内偏移量,CS(代码段R):存放当前代码段的首址的高16位。 代码段:存放指令代码(程序)。,DS(数据段R):存放当前数据段的首址的高16位。 数据段:存放程序的有关数据。,SS(堆栈段R):存放当前堆栈段的首址的高16位。 堆栈段:存放后进先出顺序存取的信息。,ES(附加段R):存放当前附加段的首址的高16位。 附加段:存放
7、运算结果或辅助数据。,( 2 ) 通用R(8个16位R):,SI(源变址R):存放数据段中某(源)OP数所在存储单元的偏移量。,DI(目的变址R):存放数据段中某(目的)OP数所在存储单元的偏移量。,SP(堆栈指针):存放堆栈段中栈顶单元的偏移量。 BP(基址指针):存放堆栈段中某一存储单元的偏移量。, 地址指针R(给出段内偏移量), 数据R,AX:累加器; BX:基址R; CX:计数R; DX:数据R,4个16位R: AX,BX,CX,DX 8个8位R: AH,AL,BH,BL,CH,CL DH,DL,( 2 ) 通用R(8个16位R):,IP(指令指针)是指令的地址指针。,(4)标志寄存器
8、FR(Flags Register) 记录程序执行时的状态,存储PSW(16位长),有9个标志位。,1 状态标志位:,CF(0):进/借位标志 PF(2):奇偶标志 AF(4):辅助进位标志 (AF=1表示低4位有进位) ZF(6):零值标志 SF(7):符号标志 OF(11):溢出标志,2 控制标志位,TF(8):单步标志 IF(9):中断允许标志。 IF=1:允许CPU响应可屏蔽外中断请求。 IF=0: 禁止CPU响应可屏蔽中断。 DF(10):方向标志。用于串操作指令。 DF=0:地址指针(SI/DI)自动递增; DF=1:地址指针(SI/DI)自动递减。,3、8086/8088的主存,
9、(1)主存特点 CPU有20条地址线。1MB寻址能力;00000HFFFFFH 支持字/字节访问。 字寻址:字存放在相邻的2个字节单元:高地址存字的高8位;低地址存字的低8位。 (字地址存放字的低8位)。,00000H,10000H,10001H,10002H,字,字,主存,56H,34H,12H,(2)主存的段结构: 可重叠。 最大段:64KB;偏移量为:0000HFFFFH,00000H,10000H,FFFFFH,物理存储器,邻接,部分重叠,间隔,完全重叠,段1,段2,段3,段4,段5,段寄存器,B,F,I,K,SS,ES,DS,CS,00000H,FFFFFH,A,D,E,F,J,K,
10、I,H,C,G,B,物理存储器,逻辑段,(3)逻辑地址与物理地址: 物理地址: 20位真正地址, 00000HFFFFFH 逻辑地址: 由段基值和偏移量表示。 逻辑地址与物理地址的转换: 物理地址= (段R)*16 + 偏移量 物理地址的形成: 取指令:物理地址=CS*24 + IP 取OP数:物理地址=DS(ES)*24 + 偏移量 堆栈OP:物理地址=SS*24 + SP(BP) 段的重叠导致逻辑地址不唯一, 但物理地址是唯一的。 一个物理地址可对应多个逻辑地址。,01B50H,01F50H,021A0H,031ACH,段基址,被访问存储单元,00000H,FFFFFH,165CH,125
11、CH,100CH,01B5H,01F5H,021AH,偏 移 量,逻 辑 地 址,物 理 地 址,4、与数据相关的寻址方式,(一)寄存器寻址 指令中所需的操作数放在CPU内的某通用寄存器中,由指令给出该寄存器的地址。 指令(地址码部分):通用寄存器的地址,R# 操作数地址形成: R# 操作数: 在通用寄存器中,( R#),例. MOV CX , AX 若(AX)=1020H,则指令执行后(CX)为1020H。,例: MOV AH , AL 若(AL)=20H,则(AH)为20H。,(二)立即寻址,指令中所需的OP数直接包含在指令代码中。 指令(地址码部分): 给出操作数。 操作数: 在指令中。
12、 立即数可以是8位或16位二进制数(带符号数,以补码表示)。只能作为源操作数,且只能是常数。,例: MOV AX, 1326H,(三)存储器操作数的寻址方式,存储单元地址的逻辑地址形式: 段基值 : 偏移量,段基值:存放在某个段R(CS,DS,ES,SS)中。 偏移量(有效地址EA):存放OP数的存储单元与段起址(段基址)之间的距离。,EA可以由位移量(常数,OP数名)、基地址(BX,BP)和变址量(SI,DI)组合成。,逻辑地址的来源,(1)直接寻址方式 操作数的有效地址(EA)由指令中的位移量字段直接提供。 指令(地址码部分) : 给出操作数的有效地址EA 操作数地址形成: A = DS
13、(段R )* 24 + EA 操作数: 在内存中, ( A ),用符号表示 例: MOV AX,VAR 或MOV AX,VAR, 用常数表示 例: MOV AX, DS:1200H 把当前数据段偏移1200H个字节的字存储单元内容送入AX中。,(2) 寄存器间接寻址 操作数的有效地址EA存放在SI,DI,BX,BP寄存器中,由指令提供所用的寄存器。 BX, SI, DI 隐含使用DS; BP隐含使用SS。,指令(地址码部分): 存放操作数地址的寄存器号,R# 操作数地址形成: A = DS (段R )* 24 +( R# ) 操作数: 在内存中, ( A ),(2) 寄存器间接寻址,例: MO
14、V AH, BX; MOV AH, DS:BX MOV DX, BP ; MOV DX, SS:BP MOV AL, SI; MOV AL, DS:SI MOV DI, CX ; MOV DS:DI, CX,例:MOV AX,BX,等价于:MOV AX,DS:BX。 设(DS)= 2000H,(BX)= 1200H,则指令功能是把主存中数据段偏移1200H字节处的一个字的内容传送到通用寄存器AX中。,(3) 变址寻址(隐含使用段R同上) 操作数有效地址EA为指定R的内容与指令中的位移量(8,16位)相加而成。 其中:位移量可以采用符号地址。,指令(地址码部分): 存放变址寄存器RX和位移量D
15、操作数地址形成: A = DS (段R )* 24 + ( RX )+D 操作数: 在内存中, ( A ),(3) 变址寻址(隐含使用段R同上),例:MOV AX,VARSI等价于:MOV AX,DS:VARSI 也可以写成:MOV AX,DS:VAR+SI或写成:MOV AX,DS:SI+ VAR。假设该符号地址VAR位于数据段偏移1200H字节处,(DS)= 2000H,(SI)= 30H。,则本条指令的功能,是把主存中数据段偏移1230H字节处(即:主存的物理地址为21230H)的一个字内容传送到通用寄存器AX中。,假设ARRAY1数组的首地址位于数据段偏移2300H处,(DS)= 20
16、00H,数组的每个元素占2个字节。使用指令:MOV AX,ARRAY1BX 可以把ARRAY1数组中的元素取出传送到通用寄存器AX中。如果(BX)= 0006H,则可以访问到ARRAY1 数组中的第4个元素ARRAY1(3),要访问元素ARRAY1(i),则设置(BX)= i2。,(4) 基址变址寻址 操作数的有效地址EA由指令中的位移量,基址寄存器(BX或BP)内容与变址寄存器(SI或DI)内容相加而成。,(三)存储器操作数的寻址方式,基址R为:BP 则:段R隐含为SS 基址R为:BX 则:段R隐含为DS,寻址方式格式: MOV AX,ARRAYBXSI; MOV AX,DS : ARRAY
17、BXSI; MOV 10HBPSI,DX; MOV SS:10H BPSI,DX,具有10行、10列的二维数组ARRAY2按照第一行(0-9个元素)、第二行(0-9个元素)的顺序连续存放在主存的数据段中,假设ARRAY2数组的首地址位于数据段偏移3400H处,(DS)= 2000H,数组的每个元素占2个字节。如果需要把数组的第1行第6个元素ARRAY2(1,6)传送到通用寄存器AX中时,则可以把BX设置成20(14H)(120),把SI设置成12(0CH)(62),使用指令MOV AX,ARRAY2BXSI完成所需数据的传送:,例:用不同寻址方式编写显示字符串String的程序,DATA SE
18、GMENT string db Hello world!,0DH,0Ah,$ count DW 14 DATA ENDS .直接寻址 mov dl,string mov ah,2 int 21h ;显示字符H mov dl,string+1 mov ah,2 int 21h ;显示字符e .,寄存器间接寻址 mov cx,count mov bx,offset string ;string的偏移地址 next: mov dl,bx mov ah,2 int 21h ;显示一个字符 inc bx loop next ;循环指令,例:用不同寻址方式编写显示字符串String的程序,变址寻址 mov
19、 cx,count mov si,0 next:mov dl,stringsi mov ah,2 int 21h inc si loop next,例:用不同寻址方式编写显示字符串String的程序,基址变址寻址 mov cx,count mov bx,offset string ;string的偏移地址 mov si,0 next: mov dl,bxsi mov ah,2 int 21h ;显示一个字符 inc si loop next ;循环指令,例:用不同寻址方式编写显示字符串String的程序,DOS显示字符串功能 mov dx,offset string mov ah,9 int
20、21h ;显示一串字符,例:用不同寻址方式编写显示字符串String的程序,(四)串操作寻址方式(8086/8088提供专门的串OP指令,OP数在存储器中),串操作指令规定:隐含使用SI作为源串在数据段(DS)中的地址指针。 隐含使用DI作为目的串在附加段(ES)中的地址指针。,标志寄存器中的方向位: DF=0:SI,DI自动增量; DF=1:SI,DI自动减量。,字节串:增量/减量为1 ; 字 串 : 增量/减量为2。,短转移:(DELT1127或DELT2-128) JMP SHORT JMPLAB,5、与转移地址相关的寻址方式,(1)段内直接寻址 JMP JMPLAB,例:JMP CX
21、JMP WORD PTR BX 或 JMP BX,(2) 段内间接寻址,(3) 段间直接寻址 JMP FAR PTR JMPLAB,(4) 段间间接寻址 JMP DWORD PTR BX,6 . I/O端口寻址 I/O接口的编址: 与存储器统一编址 I/O端口单独编址 I/O操作必须通过累加器AX 或AL。,(1)直接I/O端口寻址方式,端口地址n(8位),可访问0255以内的端口。,(2) 间接端口寻址方式,DX为I/O间址寄存器(16位地址)可访问064K-1范围的I/O端口。,(一)数据传送指令: 将数据从一个地方传送到另一个地方。 (二)算术运算指令 (三)逻辑运算指令 (四)程序控制
22、指令,五、 指令类型,1.转移指令 无条件转移:不受任何条件约束转移。 条件转移:按状态寄存器标志转移。 保存的标志包括:进位标志(C),结果 为零标志(Z),结果为负标志(S),结 果溢出标志(O),结果奇偶标志(P)。 2.循环控制指令 3.子程序调用和返回指令 4.程序自中断指令 (五)串处理类指令,(六)输入输出类指令 1.设置专用的 I/O 指令。 2.采用通用的数据传送指令实现 I/O 操作。 3.通过 I/O 处理机执行 I/O操作。 (七)系统控制类指令(包含特权指令、标志位 设置或复位指令、停机指令等) 特权指令特点及用途: 不直接提供给用户使用。 任务的创建和切换,检测用户
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编
链接地址:https://www.31doc.com/p-2634647.html