什么时候用寄存器高位,什么时候用低位?有没有规律?

bestee 2006-02-01 08:22:13
MOV  AH,01H 为什么不用AL?
MOV  DL,0AH 为什么不用DH?
多谢!
...全文
1097 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
icbm 2006-02-05
  • 打赏
  • 举报
回复
如果是使用系统功能调用,上面几位大侠说得很明白了。

一般情况下,在写程序时,通用寄存器(ax,dx,cx,bx)使用是没差别的。所谓的“没差别”,是指指令的机器码长度(占用空间)、指令执行的时钟周期(执时速度)及对标志寄存器的影响都是一样的。

不过具体应用的时候,还是有一些常用的习惯的。

ax一般用做系统功能调用的入口,如:dos/bios功能调用等。另外高级语言(如:C、C++)一般会把返回值放在ax中。

dx一般用作间接寻址,如:dos的09h、0ah功能调用。还有做乘法的时候,两个16位数相乘的时候,dx:ax存放结果,dx存放高16位。

cx一般用做循环计数,如:loop系列指令。

bx做为通用数据寄存器。

所以在选用寄存器时,尽量遵循常用习惯,会给程序编写带来方便。

如:在一个用cx计数循环的循环体中,就不要再用cx做运算了,尽量选用循环体内没有使用的寄存器,如ax/bx等来做运算。如果一定要用cx运算,必须在运算前先push cx,运算结束后再pop cx,这样才能确保cx的循环计数正确,但这样显然增加了程序编写的复杂度。


NeoZero 2006-02-02
  • 打赏
  • 举报
回复
如果接下来的不是int 21h,就可以随便啦。

PS:int 21h后al会得到返回值=dl,很多书都没有说。
大熊猫侯佩 2006-02-02
  • 打赏
  • 举报
回复
看 Dos/Bios 服务调用规范.
VxD1 2006-02-01
  • 打赏
  • 举报
回复
一般情况下可任意使用寄存器的高位或者低位,但是以下这段代码
MOV  AH,01H 
MOV  DL,0AH 
是调用dos功能调用,和子程序调用差不多,必须使用约定的寄存器来传递参数。
ah寄存器放入dos功能调用的功能号,这里mov ah, 01h表示要使用字符输出;dl寄存器中放入待输出的ASCII码,这里是一个换行符
基于单片机的地磅设计——文献综述 摘要:当今社会飞速发展,伴随计算机技术、通信技术以及电子技术的不断创新,新技 术在很大程度上改变了的生活和工作习惯。 物流、交通、运输流程中涉及许多测重的环节,地磅在其中发挥着主角的地位。传统的 地磅在称重、输入设备、及其精确性上都存在极大的不足,适应不了快速发展的社会需 求,产生极大的不便捷。本文在给出智能地磅结合传感器硬件设计的基础上,完善了地 磅的功能,阐释了基于单片机的地磅的研究现状,并对其发展方向做了展望。 关键词:地磅 单片机 计量监测 传感器 1、引言 随着当今科技的不断发展,微机应用日益普及深入,微机在通信自动化、工业自动控 制、电子测量、信息管理和信息系统等方面得到广泛的应用。嵌入式计算机系统是以应 用为中心,以计算机技术为基础,软、硬件可裁剪,适应应用系统对功能,可靠性,成 本,体积,功效等严格要求的专业计算机系统[1]。其最初应用是基于单片机的。单片机 小巧灵活,成本低,易于产品化。它面向控制,能针对性的解决从简单到复杂的各种控 制任务。 称重技术作为一种计量手段,广泛应用于工农业、科研、交通、内外贸易等各个领域 ,与人民的生活紧密相连。目前归纳了市场上地磅的使用存在的一些问题,或者是结构 复杂,或者运行不可靠,且成本高,精度稳定性不好,调正时间长,易损件多,维修困 难,装机容量大,能源消耗大,生产成本高。而且目前国内的市场上电子秤产品的整体 水平不高,部分小型企业产品质量差且技术力量薄弱,设备不全,缺乏产品的开发能力 ,产品质量在低水平徘徊。 在此基础上,对地磅的优化成为近年来电子称重技术和电子衡器的发展情况及电子衡器 市场的需求,小型化、模块化、智能化、 集成化、其技术性能趋向于速率高、准确度高、稳定性高、可靠性高,其应用性趋向于 综合性、组合性[2]。地磅是国家法定计量器具,是围计民生、国防建设、科学研究、内 外贸易不可缺少的计量设备,衡器产品技术水平的高低,将直接影响各行各业的现代化 水平和社会经济效益的提高。在此的基础上,改造一种更好的地磅将是社会发展的必然 产物。 硬件的选择 现今大部分的地磅不是硬件部分过于简单就是采用了具有数模转换的单片机,使得其只 能承担一定的称重称量功能而不能实现外界数据的输入和基于实际情况的参数调整,也 会使得系统过于简单,导致硬件在一定时候需要扩展比较麻烦。目前单片机技术比较成 熟,功能也比较强大,被测信号经放大整形后送入单片机,由单片机对测量信号进行处 理并根据相应的数据关系译码显示出被测物体的重量。单片机控制适合于功能比较简单 的控制系统,而且其具有成本低,功耗低,体积小算术运算功能强,技术成熟等优点。 2.1 传感器 传感器的定义:能感受规定的被测量,并按照一定规律转换成可用输出信号的器件或 装置。通常传感器由敏感元件和转换元件组成。其中敏感元件指传感器中能直接感受被 测量的部分,转换部分指传感器中能将敏感元件输出量转换为适于传输和测量的电信号 部分[3]。 电容式传感器 电容式传感器是将被测非电量的变化转换为电容变化的一种传感器。它有结构简单、 灵敏度高、动态响应好、可实现非接触测量、具有平均效应等优点。电容传感器可用来 检测压力、力、位移以及振动学非电参量。 电容传感器的基本工作原理可用最普通的平行极板电容器来说明。两块相互平行的金 属极板,当不考虑其边缘效应(两个极板边缘处的电力线分布不均匀引起电容量的变化 )时,其电容量为[4] 2.2前级放大器部分 经由传感器或敏感元件转换后输出的信号一般电平较低;经由电桥等电路变换后的信 号亦难以直接用来显示、记录、控制或进行信号转换。为此,测量电路中常设有模拟放 大环节。这一环节目前主要依靠由集成运算放大器的基本元件构成具有各种特性的放大 器来完成[5]。 2.3信号转换 采用A/D转换,原理:逐次逼近法 逐次逼近式A/D是比较常见的一种A/D转换电路,转换的时间为微秒级。 采用逐次逼近法的A/D转换器是由一个比较器、D/A转换器、缓冲寄存器及控制逻辑电路 组成。基本原理是从高位低位逐位试探比较,好像用天平称物体,从重到轻逐级增减 砝码进行试探[6]。 选择A/D 转换器除考虑上述要点外,为防止对A/D 转换器的技术指标的影响,还要注意以下几个问题: (1)工作电源电压是否稳定; (2)外接时钟信号的频率是否合适; (3)工作环境温度是否符合器件要求; (4)与其它器件是否匹配; (5)外接是否有强的电磁干扰; (6)印刷线路板布线是否合理。 2.4控制单片机的选型 选择单片机型号的出发点有以下几个方面:市场货源,单片机性能,研制周期。 AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Rea
【课程简介】本课程是《Armv8/Armv9架构从入门到精通 第二期》中的第四章。建议购买大课程。本课程以为armv8-aarch64、armv9为基准,不涉及armv7及其以前的版本,也不涉及aarch32。本课程包含但不限于以下内容MMU的基础学习:啥是MMU?工作原理?MMU和cache之间的关系?及其怎样相互影响的?哪些是MMU硬件自动的行为?哪些是软件可配置的行为?地址空间基础:啥是虚拟地址空间?啥是物理地址空间?啥时memory-map? 代码程序中的虚拟地址空间是怎样的?arm core硬件决定的物理地址空间是怎样的?SOC memory-map时的地址空间是怎样的?具体的外设又是怎样的地址空间?Translation Regime:系统里有多少个MMU?系统里有多少个Translation Regime?他们之间的关系是怎样的?页表翻译:MMU是怎样翻译的?页表有几级?这些信息是怎么告诉MMU的,MMU又是怎样工作的,软件又需要怎样设计?stage1和stage2的区别和使用?Descriptor:啥是Descriptor、页表项、entry、条目、页表条目? Descriptor的格式是怎样的?每一个属性位是怎样的?MMU除了完成地址转换,属性权限的控制/cache的缓存策略是怎样配置的?optee中使用MMU的示例MMU深度思考篇:开启MMU瞬间可能出现的问题以及多种常用的解决方案。注意这里提到的是多种方案,绝大多数人只知道第一种,除此之外还有没有其它的设计方式? MMU关闭时cache的缓存策略会怎样?【思考】01、一个大系统中有多少个MMU ?02、一个ARM Core中有多少个Translation regime?03、EL1&0 Translation regime Stage2、EL2 Translation regime stage1、EL2&0 Translation regime stage1 这三者的区别是什么?04、TTBR1_EL2寄存器有啥特殊性,这个寄存器是给谁使用的?05、有没有TTBR1_EL3寄存器?为什么?06、什么是memory-map? 一个ARM的系统中,有几套物理地址空间?07、页表到底有几级? 页表最少可以有几级?页表最多可以有几级?08、页表有多大? 页表存放在哪里?页表由谁来管理?09、页表是否能放在cache中?10、什么是Translation Table walk? 什么是TLB?11、请简述页表查询的过程?12、在一个大系统中,物理地址是多少位的? 物理地址是多少位指的是什么?虚拟地址又是多少位的? 物理地址的位数和虚拟地址的位数都是由谁来决定的?13、请说明entry、descriptor、页表项、条目 这个四个词汇的由来?14、TCR中有缓存属性和共享属性、页表的entry中也有缓存属性和共享属性,这俩有什么区别?15、请简述TTBR0和TTBR1的概念和意义?16、请简述cacheability和shareability属性的含义?17、stage1和stage2有何区别?18、stage1和stage2的descriptor中,有很多重复的属性,当两者属性有冲突了怎么办?19、L1、L2、L2的descriptor中也有部分相同的属性,重复时怎么办?20、Descriptor的格式有哪几种?21、Descriptor的类型有哪几种?22、简述您所观察到的系统软件中(操作系统或hypervisor)的shareability和cacheability一般都是怎样配置的?23、开启一个MMU的步骤是怎样的?24、啥是flat map? 啥是full level table?25、页表中的AF属性位、DBM属性位分别是干啥的?26、页表中的nG属性位是干啥的?27、页表中的Contiguous属性位是干啥的?28、在开启MMU的瞬间会考虑哪些事情?【课程目录】当前21节课,6.8小时

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧