微型计算机及接口技术
- 自考资讯
- 2023-07-02 23:44:32
1)立即操作数:数据作为指令的一部分
2)寄存器操作数:数据存放在cpu的寄存器中
3)存储器操作数:数据放在存储器中
4)端口操作数,数据放在端口寄存器中
数据寻址的4种类型:立即寻址、寄存器寻址、存储器寻址(直接寻址、寄存器间接寻址、基址寻址、变址寻址、基址变址寻址)、I/O端口寻址计算机执行程序时,根据指令给出的寻址方式,技术操作数的地址,然后从该地址去吃操作数进行指定的操作,这种操作数的地址称为有效地址EA,或偏移地址。
偏移地址的计算公式:EA=基址 变址 位移量
基址放在基址寄存器BX,BP;
变址放在变址寄存器SI、DI;
位移量指包含在指令中的8位或16位的无符号常数
操作数物理地址由有效地址与所在段的段基址组合形成,若访问的数据不在默认段,需使用段超越前缀指出所访问的段,方法即在段寄存器名加冒号,如ES:、SS:等
直接寻址示意图
1)直接寻址:默认的段是DS,物理地址=(DS)*10H EA
格式1:表达式中直接给出存储单元有效地址段数值形式。
MOV AX,[1234H] 指取出DS:[1234H]-->AL,DS:[12345H]-->AH
MOV BL,SS:[10H]指段超越,取出SS:[10H]字节单元内容-->AH
格式2:用变量名代表存储单元的有效地址。一个源程序中,不允许有重复定义的变量 名。源程序经过编译后,存储器的有效地址就赋给了变量名。
MOV AX,VAR 指的是取出数据段中 以VAR命名的单元的内容--->AX
2)寄存器间接寻址:存储器的操作数的有效地址放在一个基址寄存器(BX,BP)或变址寄存器(SI,DI)中,指令中出现的是寄存器编号,在通过计算公式找到有效地址
使用BX、SI和DI作为基址/变址寄存器,默认段DS:
物理地址=(DS)*10H (BX)/(SI)/(DI)
使用BP作为基址寄存器,默认段ss:
物理地址=(SS)*10H (BP)
MOV AX,[SI];访问DS段,从DS:[SI]取一个字-->AX
MOV BL,[BP];访问SS段,从SS:[BP]取一个字节-->BL
ADD AX,ES:[BX];访问ES段,从ES:[BX]取一个字与AX相加--->AX
上述,源操作数的寻址方式为寄存器间接寻址
3)基址寻址:以基址寄存器(BX,BP)的内容为基准地址,再加上指令中给出的一个8位或16位的地址位移量而得到存储器操作数的有效地址
使用BX作为段基址,默认段DS:
物理地址=(DS)*10H (BX)
使用BP作为段基址,默认段ss:
物理地址=(SS)*10H (BP)
MOV BL,10H[BP];访问SS段,从SS:[BP 10H]取一个字节-->BL
ADD AX,ES:[BX 200H];访问ES段,从ES:[BX 200H]取一个字与AX相加--->AX
MOV AX,[BX 10H];访问段DS,从DS:[BX 10H]取一个字-->AX
位移量可以是常数,也可以是变量。位移量为变量,则参与有效地址计算的是变量名代表的地址,而不是变量值。
MOV AX,VAR[BX];若变量名的有效地址为0200H,则访问DS段,从DS:[BX 0200H]取一个字-->AX
4)变址寻址:指令中给出一个位移量作为基准地址,再痛变址寄存器的内容相加作为存储器操作数的有效地址
变址寄存器只能是SI和DI,默认DS段:
物理地址=(DS)*10H (SI)/(DI)
MOV AX,[SI 120H];访问段DS,从DS:[SI 120H]取一个字--->AX
5)基址变址寻址:基址寻址和变址寻址的组合
两种格式:无位移量的基址变址寻址和有位移量的基址变址寻址
物理地址的计算:
以BX为基址寄存器无位移量:物理地址=(DS)*10H (BX) (SI)/(DI)
以BX为基址寄存器有位移量:物理地址=(DS)*10H (BX) (SI)/(DI) 位移量
以BP为基址寄存器无位移量:物理地址=(SS)*10H (BP) (SI)/(DI)
以BP为基址寄存器有位移量:物理地址=(SS)*10H (BP) (SI)/(DI) 位移量
I/O端口寻址:操作数在I/O端口中,有专门的I/O指令。1)I/O端口直接寻址:将8位的端口地址直接放在指令码后的一字节,寻址范围00H~FFH
2)I/O端口间接寻址:由DX寄存器间接给出I/O端口地址,为2字节,最多可寻址2^16=64k个端口地址
请添加微信号咨询:19071507959
微型计算机及接口技术由自考帮手网自考资讯栏目发布,感谢您对自考帮手网的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“微型计算机及接口技术”