汇编语言疑难辨析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汇编语言疑难辨析
庞新法
【摘要】汇编语言属于机器语言,由于与自然语言相差甚远,很难理解。

为了提高汇编语言程序设计的教学效果,本文对这门课中易混淆的,难以理解的概念予以解释分析。

%Assembly language is machine language, which is difficult to understand because it is far from natural language. In order to improve the teaching effectiveness of assembly language programming, this article gives the interpreted analysis which is confused and difficult to understand.【期刊名称】《价值工程》
【年(卷),期】2014(000)023
【总页数】2页(P227-228)
【关键词】指令;伪指令;中断;寻址方式
【作者】庞新法
【作者单位】陕西省委党校科技教研部,西安710061
【正文语种】中文
【中图分类】TP312
1 概述
汇编语言不同于其它高级语言,必须要求编程人员有一定的硬件基础,如对CPU 的结构、CPU与存储器等部件的数据传送过程必须要有基本的了解,这样才能学
好这门课程。

在教学过程中,教师发现学生对高级语言编程学习积极性高,对汇编语言课程缺乏兴趣,但因为课程本身指令复杂,规定繁多,再加上学习汇编指令前对CPU的相关工作过程理解不透,导致学生厌学,又由于本课程面对的低年级学
生只有高级语言的基础,习惯于高级语言的自然表达,初次接触计算机硬件知识心理上有恐惧感,更难以适应繁杂的低级语言。

本文用比较的办法,通俗易懂的自然比喻对这门课中易混淆的,较难理解的概念予以解释分析。

表1指令性语句伪指令语句指令助记忆符(如ADD)真正的机器指令翻译成0,1代码的机器指令指导执行过程告诉CPU做何种操作运行阶段执行硬件完成(CPU)单元内容是0,1代码的机器指令(如L:ADD AX,BX,L单元的内容是该指令所对应
的0,1代码的机器指令)名字后跟冒号(称为标号)标号的类型是NEAR或FAR
伪指令助记忆符(如DW,=,+)假的机器指令不翻译成0,1代码的机器指令指导汇编(翻译)过程告诉汇编程序如何翻译汇编阶段执行软件完成(MASM)单元内
容是0,1代码的2进制数据(如X DW 10,X单元的内容是数据10所对应的2进制)名字后无冒号(一般称为变量)变量的类型是BYTE,WORD或DWORD
2 指令性语句与伪指令语句的区别
例如:ADD AX,10+5 经过汇编变成 ADD AX,15,10+5的运算汇编阶段完成,AX和15的加法运算要等到运行阶段才能完成,汇编阶段能实现的运行阶段一定
能实现,上述+运算可变为ADD AX,10;ADD AX,5两句实现。

运行阶段能实现的,汇编阶段不一定能实现,如ADD AX,BX+CX;程序还没有运行,汇编阶
段不可能知道BX,CX的值,更谈不上计算二者之和。

再如以下用汉语表示的程序,要翻译成英语,看看伪指令语句如何指导汇编过程:以下是黑体,2号字,居中;指导汇编
通知;翻译
以下是宋体,3号字,首行缩进;指导汇编
今天下午开会…… ;翻译
以下是楷体,4号字,右对齐;指导汇编
特此通知;翻译
3 宏指令与子程序的区别
表2宏指令子程序名字MACRO表示宏定义开始ENDM表示宏定义结束宏调用格式:名字插入执行调用几次,目标代码重复插几次费空间(目标代码重复出现)省时间(无转返时间)参数传递:实参换形参宏调用:汇编阶段,由软件汇编程序处理名字PROC表示子程序定义开始名字ENDP表示子程序定义结束子程序调用格式:CALL名字转去执行,完后返回目标代码仅一个省空间(目标代码仅一个)费时间(有转返时间)参数传递:主程序子程序双方约定出入口单元子程序调用:运行阶段,由硬件CPU完成
4 子程序和中断服务程序的区别
表3子程序中断服务程序子程序返回指令:RET何时转子程序:可预知何时转程序何处安排CALL指令何时转:软件CALL指令实现人为安排转子程序CALL后跟子程序入口地址子程序随程序执行结束一起自动释放内存中断返回指令:IRET何时转子程序:不可预知,随机的不知程序何处安排CALL指令何时转:硬件8259中断控制器实现偶发事件触发转中断服务程序8259提供中断类型码,中断类型码转换成入口地址中断服务程序通常常驻内存
5 CALL、INT、硬中断的区别
表4CALL格式:CALL入口地址无需转换可预知INT 硬中断格式:INT 中断类型码中断类型码转换成入口地址可预知8259提供中断类型码中断类型码转换成入口地址随机
可以看出,INT既有CALL的特点(可预知),又有硬中断的特点(中断类型码转换成入口地址),介于二者之间,故称INT指令为软中断指令(由软件指令INT
发出的中断)。

6 =与EQU的区别
表5=伪指令 EQU伪指令格式:名字=表达式功能:表达式的值赋给名字表达式必须有值A=9+5■ B=ADD×可以重定义A=9■A=50■汇编时名字用表达式的值替换为名字不分配单元格式:名字EQU表达式功能:名字与表达式等价表达式有值无值均可A EQU 9+5■ B EQU ADD■不可以重定义A EQU[BX]×A EQU[SI]×汇编
时名字用表达式替换为名字不分配单元
7 LABEL、THIS、PTR 的区别(见表 6)
8 段地址、段内地址、物理地址的关系解析
为了说明段地址、段内地址、物理地址三者之间的关系,下面举例说明(表7)。

表6LABEL格式:名字LABEL类型名伪指令操作码为后继单元另起名字,另外定
义类型X LABEL WORD A=9 B=50 Y DB 1,2,3 Z DD 1,2,3 Y单元有两个名字,
称Y字节型,称X字型。

A、B并不分配单元并不分配新单元X X THIS WORD×
无伪指令操作码THIS PTR格式:THIS类型名伪指令运算符为后继单元另起名字,另外定义类型X EQU THIS WORD A=9 B=50 Y DB 1,2,3 Z DD 1,2,3 Y单元有
两个名字,称Y字节型,称X字型。

A、B并不分配单元并不分配新单元X X EQU LABEL WORD×2个伪指令操作码格式:类型名PTR地址表达式伪指令运算符为地址表达式单元另起名字,另外定义类型X EQU WORD PTR Z A=9 B=50 Y DB 1,2,3 Z DD 1,2,3 Z单元有两个名字,称Z双字型,称X字型。

A、B并不分
配单元并不分配新单元X X EQU WORD THIS Z×THIS单目运算符
表7?
9 SF⊕OF=1表示两个有符号数是小于关系解析
溢出,就是放不下,一旦溢出结果一定是错的。

例如两个瓶子容量各是5斤,一
个装了3斤水,一个装了4斤水,理论上讲,倒在一个瓶子应该是7斤,但全部
倒在一个瓶子后,成了5斤,2斤溢出,不能说3+4=5,所以一旦溢出结果一定
是错的。

异号相加,越加越少,原来放得下,加了之后一定放得下,故绝对不溢出。

同号相加,越加越多,原来放得下,加了之后不一定放得下,故有可能溢出。

若溢出OF=1,正数加正数应该是正数,应该SF=0,但若结果SF=1,正数加正数是
负数,SF=1是错的(假的符号位)。

同样道理,负数加负数应该是负数,应该
SF=1,但若结果SF=0,负数加负数是正数,SF=0是错的(假的符号位)。

表8OF 0 0 0 0 1 1 1 1 SF ZF SF⊕OF 解析关系
0(真)0(真)1(真)1(真)0(假)0(假)1(假)1(假************■11■100ZF=0,表示不等。

SF=0,表示大于。

ZF=1,表示相等。

SF=0,表示大于。

ZF=0,表示不等。

SF=1,表示小于。

ZF=1,表示相等。

SF=1,表示小于。

ZF=0,表示不等。

SF=1,表示小于。

ZF=1,表示相等。

SF=1,表示小于。

ZF=0,表示不等。

SF=0,表示大于。

ZF=1,表示相等。

SF=0,表示大于。

>不存在<■不存在<■不存在>不存

10 结束语
总之,汇编语言是计算机程序编写中最经常用的一种必要程序语言,投入汇编语言领域更多的研究与开发关注也是十分必要和有益的。

参考文献:
[1](美)布鲁姆著.编语言程序设计[M].马朝晖,译.北京:机械工业出版社,2006.
[2]全选悦,赵焕平.汇编语言的教学改革和思考[J].福建电脑,2008(2).
[3]郑影,林立东,李大辉,王殿富,艾丽丽,滕艳平.基于汇编语言课程培养高素质应用型人才策略[J].高师理科学刊,2012(03).。

相关文档
最新文档