注解: 1、立即数(Im)只能用于源操作数字段,不能用于 目的操作数字段。 2、立即数可以是8位或16位的。16位的立即数是高 位字节放在高地址,低位字节放在低地址。 3、此方式执行时直接从队列取立即数,不另占总线 周期,速度很快。 4、经常用于给寄存器或者存储单元赋初值。 21
21
2.直接寻址 ■直接寻址的操作数为存储器操作数 ·即要操作的数据在内存中; ·操作数在内存中的偏移地址由指令直接给出; ·操作数默认在数据段,段地址=DS; ·允许段重设。即通过指令将操作数更改到附加段 或堆栈段。 22
22 2. 直接寻址 ◼ 直接寻址的操作数为存储器操作数 ◼ 即要操作的数据在内存中; ◼ 操作数在内存中的偏移地址由指令直接给出; ◼ 操作数默认在数据段,段地址=DS; ◼ 允许段重设。即通过指令将操作数更改到附加段 或堆栈段
直接寻址 ■例: ·MOV AX,[1200H] ■例: MOV AX,ES:[1200H] 偏移地址 1200H 22H 11H 数据段附加段 AH AL 23
23 直接寻址 ◼ 例: ◼ MOV AX,[1200H] ◼ 例: ◼ MOV AX,ES:[1200H] 22H 11H 1200H 偏移地址 ┇ 数 据 段 AH AL 附 加 段
■例:MOV AX,[3100H] DS 6000H (DS)=6000H, 操作码 60000 (63100H)=3050H, 00 3100 代码段 则:(AX)=3050H 31 3100 =63100H 50H AH AL 30H 30H 50H 据段 24
◼ 例:MOV AX,[3100H] (DS)=6000H, (63100H)=3050H, 则: (AX)=3050H 24
可以用符号地址来代替数值以表示操作数的 偏移地址;如用BUFFER代替偏移地址 1200H,则MOV BL,ES:[BUFFER],注意 BUFFER必须在程序的开始处定义; ■直接寻址方式适用于存、取存储器变量。 25
◼ 可以用符号地址来代替数值以表示操作数的 偏移地址;如用 BUFFER 代替偏移地址 1200H, 则 MOV BL,ES:[BUFFER] , 注 意 BUFFER必须在程序的开始处定义; ◼ 直接寻址方式适用于存、取存储器变量。 25