3. 寻址方式与指令系统.ppt
文本预览下载声明
第三章 寻址方式与指令系统 寻址方式 操作码(指示指令应完成的具体操作) 操作数(表示指令的操作对象) 寻找指令中所需操作数的各种方法叫寻址方式。 Intel 8086/8088 CPU指令所需操作数类型。 8086/8088的8种寻址方式 寄存器寻址(Register Addressing) 指令中所需操作数在CPU某寄存器(通用寄存器和段寄存器)中,由于存取这种操作数完全在CPU内部进行,不需要执行总线周期,所以执行速度快。如: mov cl,al mov dh,bl mov dx,cx mov ds,ax 8086/8088的8种寻址方式 立即数寻址(Immediate addressing) 指令中所需操作数包含在指令代码中,立即数操作数可以是8位,也可以是16位。由于在指令执行过程中,立即数作为指令的一部分直接从BIU的指令序列中取出,同寄存器寻址方式一样,不需另外占用总线周期,因此这种寻址方式执行速度快。 8086/8088的8种寻址方式 立即数寻址(Immediate addressing) mov bx,0a427h mov cl,12 mov bx,”ab” mov dh,”a” mov ax,1234h mov ah,0abh 8086/8088的8种寻址方式 宏汇编源程序中使用的逻辑地址形式: 段基址:偏移量 段基址存放于段寄存器中;而偏移量表示需要访问的存储单元与段起始地址之间的距离。 偏移量是由CPU的执行单元EU来确定和计算的有效地址(EA) 组成EA或偏移量的3个地址分量 位移量 位移量是指令中的一个8位或16位二进制数,在源代码中通常以变量名或标号的形式出现。 基地址 由基址寄存器BX、基址指针BP提供的地址分量。 变址 由源变址寄存器SI或目的变址寄存器DI所提供的地址分量。 由三地址分量组合得到的存储器寻址方式 直接寻址(Direct addressing) 在寻找存储器中操作数时,EA直接由位移量给出。 用符号表示:mov bx,ds:var mov ah,data_byte mov cl,da + 3 用常数表示:mov ax,ds:[100h] 注意与它区分:mov ax,100h 由三地址分量组合得到的存储器寻址方式 寄存器间接寻址(Register indirect addressing) 操作数有效地址EA(偏移量)直接从基址寄存器(BX或BP)或变址寄存器(SI或DI)中获得,例如: mov ax,[bx] (段基址寄存器:DS) mov bh,[bp] (段基址寄存器:SS) mov cl,[si] (段基址寄存器:DS) mov [di],bx (段基址寄存器:DS) 由三地址分量组合得到的存储器寻址方式 基址寻址和变址寻址 操作数的有效地址EA是基址寄存器或变址寄存器给出的分量与指令中给出的位移量之和。 mov ax,10h[si] mov ax,array[bx] mov table[di],al mov tabz[bp],bl mov ax,ds:10h[si] mov ax,ds:array[bx] mov ds:table[di],al mov ss:tabz[bp],bl 由三地址分量组合得到的存储器寻址方式 基址变址寻址(Based indexed addressing) 操作数的有效地址EA是3个地址分量之和。 mov ax,array[bx][si] mov al,table[bx],[di] mov da_word[bp][si],dx mov ds_byte[bp][di],cl 下列的指令语句是非法的。 mov ax,array[bx][bp] mov ax,da_word[si][di] 应用到九九乘法表的例子。P29 存储器寻址方式归纳总结 P30 图3.9 串操作寻址(String addressing) 隐含使用变址寄存器SI和DI。 每完成一次串操作,SI和DI自动进行修改。 DF=0,SI,DI寄存器自动增量;DF=1,SI,DI寄存器自动减量。 串操作按字节进行,增量减量为1;串操作按字进行,增量减量为2。 DI目的变址寄存器对应的段寄存器为:ES。 指令系统 传送类指令(Transfer instructions) 算术运算类指令(Arithmetic instructions) 位操作类指令(Bit manipulation instructions) 串操作类指令(String instructions) 程序转移类
显示全部