微机原理学习笔记——寻址方式和传送指令(MOV)

目录

操作数的寻址方式

立即数寻址方式

寄存器寻址方式

存储器寻址方式

段超越前缀指令

直接寻址方式

寄存器间接寻址方式 

寄存器相对寻址方式

基址变址寻址方式

相对基址变址寻址方式

存储器寻址方式中的变量

其它

数据传送类指令(MOV)

MOV的非法指令 


操作数的寻址方式

操作数的寻址方式是寻找操作数或操作数地址的方式,分为三种分别是立即数寻址方式、寄存器寻址方式、存储器寻址方式。

立即数寻址方式

        立即数寻址方式的特点是操作数作为指令的一部分存放在操作码之后的主存单元中且立即数可以是8位(0~255、00H~FFH)数值、16位(0000H~FFFFH、0~65535)数值、字符常量;它们的位置只能在src即源操作数的位置。


寄存器寻址方式

        寄存器寻址方式的操作数存放在CPU的内部寄存器(CS代码段、DS数据段、ES附加段、SS堆栈段)中,可以是8位寄存器、16位寄存器;其中16位寄存器不可以用IP、CS不能在目的操作数dst的位置,只能在源操作数src的位置,寄存器的名字就是表示其内容(操作数)。


存储器寻址方式

        存储器寻址方式的操作数在主存储器中,用主存EA有效地址表示,8086CPU分别设计了5种存储器寻址方式(直接寻址方式、寄存器间接寻址方式、寄存器相对寻址方式、基址变址寻址方式、相对基址变址寻址方式)

段超越前缀指令

        段超越前缀是用来改变默认的段地址,没有指明时,一般的数据访问在DS数据段中,使用BP访问主存,则在SS堆栈段,改变默认的段地址格式,则需要使用段超越前缀指令。

 

直接寻址方式

        有效地址EA在指令中直接给出,中括号是表示有效地址EA,默认的段地址是数据段DS,可用段超越前缀改变。

寄存器间接寻址方式 

         有效地址EA存放在BX、SI、DI或BP中,EA为BX、SI、DI时,默认是DS,BP默认是SS,可以使用段超越前缀改变。

寄存器相对寻址方式

        EA=BX/BP/SI/DI+8/16位的位移量,BX、SI、DI默认是DS,BP默认是SS,可使用超越前缀改变。

基址变址寻址方式

        EA=BX\BP+SI\DI,BX、SI、DI默认是DS,BP默认是SS;可使用段超越前缀改变。

相对基址变址寻址方式

        EA=BX、BP+SI、DI+8、16位位移量,BX、SI、DI默认是在DS,BP默认是在SS;可使用超越前缀改变。


存储器寻址方式中的变量


其它

(1):有效地址EA是在执行单元EU中运算而物理地址PA是在BIU的20位物理地址加法器中运算

(2):三种寻址方式,寄存器寻址方式是最快的是因为是直接在CPU内部,不需要总线周期。其次是立即数寻址方式,他的操作数是一直存储在CS代码段中需要启用总线周期。最后是存储器寻址方式,因为它的操作数不仅存储在代码段中,还会存储在其它段中(ES、SS、DS)


数据传送类指令(MOV)

        传送指令把数据从一个位置传送到另一个位置,除标志寄存器传送指令外(CF、OF、SF、AF、ZF、PF、TF、IF、DF),均不影响标志位,传送类指令有MOV、XCHG、PUSH、POP、LEA。

MOV指令——立即数传送

MOV指令——寄存器传送

MOV指令——存储器传送

 

MOV指令——段寄存器传送

 


MOV的非法指令 

 (1)两个操作数类型不一致。在绝大多数的双操作数指令中,目的操作数和源操作数必须是一样的数据类型,要么一块是字,要么一块是字节;否则为非法指令。

(2)无法确定是字节还是字操作。 当无法通过一个操作数确定其类型时,需要利用汇编语言的操作符显式指明。

(3)两个操作数都是存储器。 不允许两个操作数都是存储单元(存储器操作数)

(4)段寄存器的操作有限制。能直接对段寄存器操作的指令只有MOV等个别传送指令,并且不灵活。

 

 

 

 

 

  • 15
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 电子秒表是一款非常常见的计时器设备,用于在各种比赛、运动等场合中进行时间计时。在微机原理课程设计中,使用8254芯片来设计电子秒表显示0-60s是一个典型的实践案例。 首先,我们需要了解8254芯片的基本结构和功能。8254是一种集计时、计数、中断控制等多种功能于一身的可编程计数器/计时器,它有三个独立的计数通道,每个通道可以选择不同的工作模式,以满足不同的需求。 在设计电子秒表时,我们需要将8254芯片的一个计数通道设置为定时模式,将计数周期设置为1s,即每隔1s输出一个计时信号。然后,我们可以将此信号与一个数码管显示芯片连接起来,以实现对时间的显示。 具体而言,我们可以使用常见的7数码管来显示时间,每一位数码管需要接一个控制芯片来实现显示。当我们每隔1s接收到计时信号时,我们需要对显示值进行更新: 1. 如果当前显示时间为59s,则需要将秒数归零,重置计时器; 2. 如果当前显示时间不为59s,则将秒数加1,并将其在数码管上进行显示。 此外,我们还需要设计一些操作按钮,如计时开始/暂停、清零等按钮,来方便用户对计数器进行控制。通过这些设计和调试,我们即可得到一款简单而实用的电子秒表应用。 总之,微机原理课程设计中使用8254芯片设计电子秒表是一个充满挑战性和趣味性的案例,既涉及到硬件电路设计,又涉及到程序设计,是学生们锻炼实践能力和创新能力的重要方式之一。 ### 回答2: 在微机原理课程设计中,设计一款使用8254芯片显示0-60秒的电子秒表,需要遵循以下步骤: 1. 确定硬件接口:选择使用8254芯片作为计时器,连接相应的控制引脚,将输出接口与数码显示器连接。 2. 编写程序框架:采取中断方式进行计时,设定中断间隔为1秒。在程序中定义计时器初值为0,并采用循环方式进行计数,直到达到60秒。 3. 编写计时中断处理程序:在中断处理程序中,每次中断发生时将计时器的计数值加1,并使用BCD码转换将计数值转换为数码显示器可识别的格式。 4. 编写数字显示程序:使用相应的数码显示器驱动程序,将计数值显示在数码显示器上。 5. 调试程序并优化:进行测试和调试,发现问题后进行优化,确保程序能够正常运行。 总之,设计一款使用8254芯片显示0-60秒的电子秒表需要硬件和软件两方面的技术,需要对8254芯片的特性有深入的了解,同时需要熟练掌握操作系统和编程语言,才能够完成一个稳定可靠的电子秒表。 ### 回答3: 8254是一款计数器芯片,通过编程来实现对时间的计算和控制。我们可以使用8254来设计一个电子秒表,让它可以自动计时,达到60秒自动停止并显示时间。 首先,需要将8254编程为定时器模式,并设置计数时间间隔为1秒。然后,在程序中添加一个异步时钟电路,以确保计时精度。接下来,就可以开始编写程序,以实现秒表的计时和显示功能。 具体的实现细节包括:初始化8254定时器,设置计时周期;开启定时器中断,以便能够响应定时器中断事件;在中断服务程序中累加计时器计数值,同时判断是否达到60秒时间;若达到60秒时间则停止定时器,显示时间结果;否则继续计时。 在显示方面,可以使用LED数字管或LCD显示屏等设备,通过编程控制其显示内容。在停止计时后,需要将计时结果转换为可读的格式,并显示出来,如显示为“00:00:60”表示计时器达到60秒。 总的来说,使用8254设计电子秒表可以锻炼编程思维和计算思维能力,在实现过程中需要充分考虑时序、中断、显示等方面的问题,同时需要注意代码的简洁性和可读性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小黄爱吃辣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值