汇编语言程序设计的要点和技巧

汇编语言程序设计的要点和技巧

ID:5325128

大小:276.61 KB

页数:4页

时间:2017-12-08

汇编语言程序设计的要点和技巧_第1页
汇编语言程序设计的要点和技巧_第2页
汇编语言程序设计的要点和技巧_第3页
汇编语言程序设计的要点和技巧_第4页
资源描述:

《汇编语言程序设计的要点和技巧》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、万方数据·32·2006年第29期中国西部科技汇编语言程序设计的要点和技巧王义(徐州工程学院信电学院徐y、1,1221008)摘要:本文以8086/8088汇编语言为基础,对学.---j过程中值得注意的问题以及程序设计中的相关技巧进行探讨。关键词:汇编语言程序设计技巧要点1引言汇编语言能充分利用计算机所有的硬件特性并对硬件进行直接控制,汇编语言编制的程序比使用其它语言编制的程序执行速度快、资源占用少,所以,汇编语言在工业自动化控制和智能化产品的生产上有着十分广泛的用途。但是,汇编语言是一种低级符号语言,与机器指令有着一一对应的关系,与高级语言相比不太符合人的思维习惯

2、,它面向寄存器、内存单元,必须通过一种具体的计算机来学习,同时要求初学者应具有一定的硬件基础,真正掌握起来有一定的难度。为此本文以目前广泛使用的8086/8088微机为基础,讨论程序设计的要点和技巧。2寻址方式的准确使用程序设计的目的是将输入数据加工处理转换成输出数据,获取正确的数据是保证程序处理正确的前提,而获取正确的数据又与正确地使用寻址方式关系密切,所以有必要先从寻址方式谈起。(1)程序预定义数据的寻址。在程序装入时,程序中预定义的数据一并进入内存,可在程序中直接使用。由于8086/8088是16位计算机,其最大寻址空间为1MB,所以,物理地址=段地址×16+

3、偏移地址。这里讲的寻址主要指偏移地址(有效地址)。对于程序中定义的单一变量而言,在程序中宜采用直接寻址方式来访问,使程序设计简单明了。如要把变量名为X的值放入AX中,可使用语句MOVAX,X或MOVAX,【X】。需要注意的是在数据段中应将x说明成“字”类型变量,否则汇编时会出错。对于表格或数组变量的操作(如使用循环实现),可采用基址变址或寄存器相对寻址方式。如X是一维字数组,现要把X中的第三个字放入AX中。使用相对寻址方式如下:(BX为16位的位移量,即相对于X的距离)MOVBX,4(Bx的值可在循环体内实现自增或自减)MOVAX,【X+BX】使用基址变址寻址方式如

4、下:(BX为基址寄存器,SI为变址寄存器)LEABX,X(BX的值可在循环体外装入X的有效首地址)MOVSI,4(SI的值可在循环体内实现自增或自减)MOVAX,【BX+SI】在这两种寻址方式中除要保证原操作数和目的操作数的类型一致外,还要注意基址寄存器只能是BX或BP,变址寄存器只能是SI或DI。同时,在计算物理地址时隐含的段基址,如BX、SI、DI联合或单独寻址,段基址隐含在DS中;BP单独寻址或BP和SI、DI联合寻址,段基址在隐含SS中。如不清楚这一点,极易导致程序的逻辑错误乃至程序崩溃。(2)通用设备数据输入的寻址。通用设备如键盘、磁盘等,由于在开机时操作

5、系统已经对它们进行了初始化,配备了相应的设备驱动程序,只要使用操作系统提供的功能调用即可进行输入输出,这些设备对用户来说是完全透明的。具体方法如下:首先按功能调用的要求初始化入口参数并执行语句INTN(N为功能调用号),然后从相应的寄存器或内存中取出输出结果即可。对于字符型设备如键盘,出口参数通常都是放在寄存器中;而对于块设备如磁盘,出口参数通常都是放在预先开辟好的内存中,使用时可参照1.1进行访问。(3)输入输出指令的寻址。外设通过硬件接口板插在总线上与计算机相连,系统会将一部分端口地址分配给I/O设备的控制、状态、数据寄存器,在程序中可通过IN、OUT指令直接实

6、现外设和CUP、内存之问的动态数据交换。在使用这两条语句时需要注意两点:一是端口宽度:如端口宽度是8位,输入时须使用INAL,端口号,输出时须使用oUT端口号:AL。如端口宽度是16位,输入时须使用INAX,端口号,输出时须使用OUT端口号,AX。二是端口地址:如端口地址大于255,则首先应把端口地址送入DX中,然后使用短格式进行寻址。如输入是采用lNAL/AX,DX,输出时采用OUTDX,AL/AX。3汇编语言程序设计技巧808618088汇编语言程序设计中一般说来遵循以下几个步骤:首先分析题意,确定解题算法。然后根据算法由粗到精画程序流程图,最后编写程序。本节主

7、要讲编写程序方面的技巧。(1)隐含寄存器的使用。汇编语言程序设计的难点之一是许多指令在执行时操作数的寻址所使用的寄存器是隐含的,这就要求程序设计者在使用这些指令之前应对该指令所涉及的其它寄存器的值进行初始化,而初始化工作又恰恰是初学者最容易忽略的事情。如大部分的串操作指令,源串物理地址在【DS:SI】中,而目的串物理地址在【ES:DI】中。如果在同一个段内进行串操作,则应将DS、ES赋予同一个段基址;如在两个段内进行串操作,则应将DS、ES赋予不同的段基址。同时还应注意CX中的值隐含串的长度(字节或字均可),所以,使用串操作指令前应特别注意ES,CX的赋值。再如

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。