8086指令系统

您所在的位置:网站首页 地址传送 8086指令系统

8086指令系统

2024-05-22 00:01| 来源: 网络整理| 查看: 265

知识点 输入输出指令 什么是输入输出指令? 输入输出指令格式及功能 输入输出指令的实例 输入输出指令的两种寻址方式及注意事项 取偏移地址指令 什么是取偏移地址指令? 指令格式 取偏移地址指令的实例 其他传送类指令 输入输出指令 什么是输入输出指令? 输入指令:输入指令IN用于从I/O端口读数据到累加器AL(或AX)中 输出指令:输出指令OUT用于把累加器AL(或AX)的内容写到I/O端口 注意 输入输出指令中,只有累加器AL(或AX)才能与I/O端口进行数据传送,所以这两条指令又称为累加器专用指令。 输入输出指令格式及功能

长格式: IN acc, port OUT acc, port 直接寻址,port为8位立即数表示的端口地址 短格式: IN acc, DX OUT acc, DX 寄存器间接寻址,16位端口地址由DX指出 功能:

IN指令从端口输入一个字节到AL或输入一个字到AX中 OUT指令从端口输入一个字到AL或输入一个字到AX中 输入输出指令的实例 123456789MOV DX, 03B0H              ; 目的操作数:DX ,寄存器寻址   源操作数:03B0H,立即寻址  语句:将16位端口地址送DX IN AL,DX                   ; 寄存器间接寻址方式,从地址为03B0H的端口输入一个字节到AL IN AX,3FH                  ; 直接寻址,从地址为3FH的端口输入一个字到AX OUT 43H,AL          ;直接寻址,将AL的内容输出到地址为43H的端口 OUT 44H,AX          ;直接寻址,将AX的内容输出到地址为44H的端口 MOV DX,33FH         ;目的操作数:DX,寄存器寻址     源操作数:333FH,立即寻址  语句:将16位端口地址33FH送DX OUT DX,AL           ;寄存器间接寻址,将AL的内容输出到地址为33FH的端口 输入输出指令的两种寻址方式及注意事项

注意1: 从上述实例中我们看到了IN指令和OUT指令的寻址方式,需要注意的是,I/O寻址方式和存储器寻址方式是不同的,不要混淆了。例如,

123456789在存储器寻址中: MOV DX,03B0H     中 03B0H 是立即数,在存储器寻址中由指令直接给出,是立即寻址 MOV DX, [03B0H]  中 [03B0H] 是指存储器偏移地址为03B0H中存放的内容,是直接寻址 MOV DX,AX        中AX是指寄存器AX里的值,表示把AX的值复制给DX, 是寄存器寻址 MOV DX,[AX]      中[AX] 是指 先得到寄存器AX存放的值,将这个值作为存储器的偏移地址,然后把这个偏移地址里的值复制给寄存器DX,是寄存器间接寻址 在I/O寻址中: IN AX,3FH    中3FH是立即数,并且没有[]围起来,这是I/O寻址中的直接寻址,不要当成存储器寻址的立即数寻址 OUT DX,AL    中DX是寄存器,但这是I/O寻址中的寄存器间接寻址,不要当成存储器寻址的寄存器寻址

注意2: 采用间接寻址的IN/OUT指令只能用DX寄存器作为间接寻址寄存器

I/O指令的两种寻址方式:直接寻址、寄存器间接寻址

取偏移地址指令 什么是取偏移地址指令?

取偏移地址指令是将存储器操作数的16位偏移地址送到指定的寄存器。

指令格式

指令格式:

1    LEA reg16,mem

LEA指令即取偏移地址指令,这里,源操作数必须是存储器操作数,目标操作数必须是16位通用寄存器。因该寄存器常用来作为地址指针,故在此最好选用4个间址寄存器之一。

取偏移地址指令的实例 123LEA BX,BUFFER       ;将内存单元BUFFER的偏移地址送BX MOV AL,[BX]         ;取出BUFFER的第一个数据送AL MOV AH,[BX+1]       ;取出BUFFER的第二个数据送AH

其他传送类指令 指令类型 汇编格式 指令的操作 示例 字位扩展指令 CBW 将AL中的字节数扩展为字,并存放在AX中。扩展的原则是:将符号位扩展到整个高位 MOV AL,8EHCBW;结果:AX=FF8EH CWD 将AX中的字扩展为双字,扩展后的高16位存放在DX中。扩展的原则与CBW指令相同 MOV AX,438EHCWD;结果:AX=438EH,DX=0000H 远地址传送指令 LDS reg16,mem32 mem32为内存中连续4个单元的首地址。指令将[mem32]和[mem32+1]单元的内容送reg16,将[mem32+2]和[mem32+3]单元的内存送DS 设1234H为首的4个单元的内容分别为:11H,22H,00H,90H,则执行完指令:LDS SI,[1234H]:SI=2211H,DS=9000H LES reg16,mem32 指令将[mem32]和[mem32+1]单元的内容送reg16,将[mem32+2]和[mem32+3]单元的内容送ES 标志传送指令 LAHF 将FLAGS低8位的内容送AH 设SF=1,ZF=0,AF=1,PF=1;CF=0执行指令LAHF;AH各位状态为10X1X1X0 SAHF 将AH的内容送到FLAGS低8位 PUSH 将FLAGS的内容压入堆栈中保存 POPF 把当前栈顶的两个单元的内容弹出到FLAGS中


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3