汇编语言与程序格式 .ppt
文本预览下载声明
坚信 坚定 坚持 专注和简单 第二章 汇编语言程序设计 80X86的寻址方式 80X86的指令系统 汇编语言程序格式 汇编语言程序设计方法 汇编语言程序设计举例 汇编语言与高级语言的接口 第一节 80X86的寻址方式 固定寻址 立即数寻址 寄存器寻址 存储器寻址 I/O端口寻址 与转移地址有关的寻址 1. 固定寻址 这是一种特定的单操作数指令,其操作数隐含在操作码中,常常是对某一个固定的寄存器进行操作。例如: CBW ; (AL)→(AX) 该指令指定的操作数在AL寄存器中,其功能是将AL寄存器中的符号位扩展到AH中。形成16位的操作数存放在AX中。 2. 立即数寻址 这种寻址方式下,操作数就包含在指令中,作为指令的一部分,它与操作码一起存放在代码段中。例如: MOV AX,1102H ;给AX寄存器赋值 立即数寻址只能用于源操作数的寻址,而不能用于目的操作数的寻址。 MOV BX,0A123H 指令执行后(BX)=0A123H 3. 寄存器寻址 操作数在CPU内部的寄存器中,指令指定寄存器名,操作数的位数由寄存器名决定。例如: MOV AX,BX;将BX的内容送AX中。 MOV [1234H],BX;将BX内容送地址为1234H的内存单元中。 4. 存储器寻址 直接寻址方式 寄存器间接寻址方式 寄存器相对寻址方式 基址变址寻址方式 相对基址变址寻址方式 比例变址寻址方式 ⑴ 直接寻址方式 操作数的偏移地址就包含在指令中,默认段是数据段。例如: MOV AL,[2000H];将DS段中偏移地址为2000H的字节单元内容送寄存器AL中. MOV AX,ES:[2000H];将附加段中偏移地址为2000H的字单元内容送寄存器AX中. MOV AX,[1122H]; 设(DS)=3000H ⑵ 寄存器间接寻址方式 操作数的偏移地址存放在指令指定的寄存器中,寄存器作为指针指向内存单元,这样的寄存器称为间址寄存器。操作数在存储器中。例如: MOV AX,[SI] ;数据段中一个字送AX MOV AX,ES:[DI] ;附加段中一个字送AX MOV AX,[BP] ;堆栈段中一个字送AX MOV AX,DS:[BP] ;数据段中一个字送AX 例: MOV AX,[BX] ;设(DS)=2000H,(BX)=1234H 物理地址=20000H+1234H =21234H 指令执行后(AX)=5678H ⑶ 寄存器相对寻址方式 操作数的偏移地址是间址寄存器的内容加上位移量,位移量是地址的一部分。例如: MOV AX,10H[SI] MOV AX,ES:10H[SI] MOV AX,TABLE[SI] 位移量TABLE是表的首地址,间址寄存器SI的内容加上位移量就是要访问的表中的某一数据. MOV AX,COUNT[BX](DS)=3000H,(BX)=1234H,COUNT=1000H 物理地址=30000H+1234H+1000H =32234H 指令执行后 (AX)=5678H ⑷ 基址变址寻址方式 操作数的偏移地址一部分在基址寄存器,一部分在变址寄存器,基址寄存器的内容与变址寄存器的内容之和就是操作数的偏移地址。例如: MOV AX,[BX][SI] ; MOV AX,ES:[BX][SI] ; MOV AX,[BX][SI] (DS)=2100H,(SI)=1234H,(BX)=1100H 物理地址=21000H+1234H+1100H =23334H 指令执行后 (AX)=5678H ⑸ 相对基址变址寻址方式 带位移量的基址变址寻址称为相对的基址变址寻址方式。例如: MOV AX,100H[BX][SI] MOV AX,ES:100H[BX][SI] MOV AX,100H[BP][SI] ⑹ 比例变址寻址方式 比例变址寻址方式只能在32位及以后的系统中使用。操作数的有效地址是变址寄存器的内容乘以指令中指定的比例因子再加上位移量。例如: MOV AX,[EBX+4*EDI+20H]; 这是32位寻址,指令执行的结果是将数据段中偏移地址为(EBX)+4*(EDI)+20H的内存单元的一个字数据送AX寄存器中. 5. I/O端口寻址 ⑴ 直接端口寻址——指令中包含I/O端口的直接地址 (8位端口) 。 IN AL,80H ;读80H端口的数据 OUT 80H,AL ;往80H端口写数据 ⑵ 间接端口寻址——用DX寄存器间接访问端口(16位端口) 。 MOV DX,200H ;将
显示全部