第9讲汇编程序概述与程序格式

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第三章内容回顾2项目:把字符串显示到屏幕上项目要求与目的(1)项目要求:编写程序实现把附加段的字符串helloworld!显示到屏幕上。(2)项目目的:学习汇编的上机调试和汇编语言程序格式以及程序设计方法。3第三章重点之一8086指令系统的寻址方式一、立即寻址方式二、寄存器寻址方式三、直接寻址方式四、寄存器间接寻址方式五、寄存器相对寻址方式六、基址变址寻址方式七、相对基址变址寻址方式八、其它4第三章重点之二8086指令系统数据传送指令算术运算指令逻辑运算和移位指令字符串处理指令控制转移指令处理器控制指令5第四章汇编语言程序设计汇编语言程序结构汇编语言程序格式程序设计方法宏命令DOS系统功能调用汇编语言的编译与调试内容提要6▲汇编语言(AssemblyLanguage)指令的助记符+符号地址+标号是机器语言的符号表示,是较低级的语言。▲源程序利用汇编语言编写的程序,称源程序。不能被机器识别。▲源程序的运行汇编程序翻译成二进制的浮动目标程序连接程序将目标文件与库文件相连,形成可执行程序可执行的程序在机器上直接运行▲高级语言:可读性好,编程简单;汇编语言:实时性能好,程序效率高,节省内存,运行速度快;第四章宏汇编语言程序设计——概述概述例在屏幕上显示并打印字符串“Thisisasampleprogram”。一个完整的用汇编语言编写程序的格式:7第四章宏汇编语言程序设计——概述DATASEGMENT;数据段DA1DB‘Thisisasampleprogram.’DB0DH,0AH,‘$’DATAENDSSTACKSEGMENTST1DB100DUB(?)STACKENDSCODESEGMENT;代码段MAINPROCFARASSUMECS:CODE,DS:DATA,SS:STACKORG1000HSTART:PUSHDS;正常返回所需段地址及偏移地址MOVAX,0PUSHAXMOVAX,DATA;送数据段段地址MOVDS,AXMOVAX,STACK;送堆栈段地址MOVSS,AX8第四章宏汇编语言程序设计——概述MOVAH,9;DOS9号功能调用,显示字符串MOVDX,OFFSETDA1INT21HRETMAINENDPCODEENDSENDSTART9第四章汇编语言程序设计——概述宏汇编使用的语句分三类指令性语句伪指令语句宏汇编语句10§4-3汇编语言程序格式——指令性语句指令性语句:与机器指令相对应,可译成目标代码(机器指令代码)。语句格式:标号:指令助记符操作数,操作数;注释▲标号:指令语句的符号地址,后面必须紧跟冒号“:”。•注意:标号可使用字母、数字和特殊符号;首字符必须是字母或特殊符号;最大长度31个字符;可以省略,经常作为表示转移的地址。▲指令助记符:指令名称的代表符号,指出指令的操作类型。•可译成机器码;不可省略,是关键字。▲操作数:参与指令运算的数据。•可以有一个、多个操作数或无操作数;多个操作数之间用逗号“,”隔开,操作数与指令助记符之间用“空格”隔开。•操作数可以是常数、变量、标号、寄存器名或表达式。▲注释:说明指令或程序的功能,可省略。注释前加分号“;”。一、指令性语句11§4-3汇编语言程序格式——伪指令语句伪指令语句:无对应的机器指令,汇编时对伪指令进行处理,可完成数据定义、存储区分配、段定义、段分配、指示程序结束等功能。语句的格式:名字伪指令指示符操作数,操作数;注释▲名字:用符号地址表示,名字后不允许带冒号“:”,但可以省略。•通常是变量名、段名、过程名、符号名等。▲伪指令指示符:汇编程序MASM规定的符号。•常用的有变量定义语句(DB、DW),符号定义语句(EQU、=),段定义语句(SEGMENT…END),段分配语句(ASSUME),过程定义语句(PROC…ENDP)等。▲操作数:不同伪指令有不同要求。•操作数可以是常数、变量、字符串、表达式等。▲注释:功能和使用与指令性语句相同。二、伪指令语句12§4-3汇编语言程序格式——数据项汇编语言中的操作数,可以是常数、寄存器、存储器、变量、标号或表达式。其中,常数、变量、标号是三种基本数据项。1.常数:是固定值,没有属性,是确定的数据。二进制:字母“B”结尾,例00110100B;八进制:字母“Q”或“O”结尾,例1037O、2370Q;十进制:字母“D”结尾或省略,或科学表示法,例1234D、5678、2.735E-2;十六进制:字母“H”结尾,“A~F”开头时,前面加0,例56H、0A7F2H;字符串:用单引号‘’括起来,机内存放的是各字符的ASCII码。例‘ABC’。三、数据项13§4-3汇编语言程序格式——数据项2.变量:变量通常指存放在存储单元中的值,程序运行中可以修改。所有的变量都具有三个属性。⑴段值(SEGMENT):指变量所在段的段基址。⑵段内偏移地址(OFFSET):指变量所在地址与所在段首地址之间的地址偏移字节数。⑶类型(TYPE):指变量中每个元素所包含的字节数:字节变量(BYTE)、字变量(WORD)、双字变量(DWORD)等。14§4-3汇编语言程序格式——数据项3.标号:标号是可执行指令语句的地址的符号表示,可作为程序转向的目标地址。具有三个属性。(1)段值(SEGMENT):•标号所在段的段基址。(2)段内偏移地址(OFFSET):•标号所在地址与所在段的段首址之间的偏移地址字节数。(3)类型(TYPE):指在转移指令中标号可转移的距离,也称距离属性。•类型NEAR,表示此标号为近标号,只能实现段内转移或调用;•类型FAR,表示此标号为远标号,可以实现段间转移或调用。•若标号后面紧跟冒号,表示隐含此标号距离属性为NEAR,也可用伪指令将此属性改为FAR。15§4-3汇编语言程序格式——MASM中的表达式MASM中的表达式概述表达式:运算对象+运算符。·在汇编时进行运算,运算结果作为语句中的操作数。运算对象:常数、变量、标号。·得到的运算结果可以是一个常数字,也可以是一个存储器的地址。MASM中6类运算符:如表4-1所示。·算术运算符(ArithmeticOperators)·逻辑运算符(LogicalOperators)·关系运算符(RelationalOperators)·数值返回运算符(Value-ReturningOperators)·修改属性运算符(ModifingattributeOperators)·其它运算符(otherOperators)16§4-3汇编语言程序格式——MASM中的表达式表4-1MASM的表达式中的运算符(1)类型符号名称运算结果算术运算符+-*/MODSHLSHR加法减法乘法除法模除左移右移和差乘积商余数左移后二进制数右移后二进制数逻辑运算符ANDORXORNOT与运算或运算异或运算非运算逻辑与结果逻辑或结果逻辑异或结果逻辑非结果17§4-3汇编语言程序格式——MASM中的表达式表4-1MASM的表达式中的运算符(2)类型符号名称运算结果关系运算符EQNELTLEGTGE相等不等小于小于等于大于大于等于结果为真输出全“1”结果为假输出全“0”数值返回OFFSETSEGTYPELENGTHSIZE返回偏移地址返回段基址返回元素字节数返回变量单元数返回变量总字节数偏移地址段基址字节数单元数总字节数18§4-3汇编语言程序格式——MASM中的表达式表4-1MASM的表达式中的运算符(3)类型符号名称运算结果修改属性段寄存器名PTRTHISHIGHLOWSHORT段前缀修改类型属性制定类型/距离属性分离高字节分离低字节短转移说明修改段修改后类型指定后类型高字节低字节-128~127字节间转移其他运算符()[]园括号方括号改变运算符优先级下标或间接寻址19§4-3汇编语言程序格式——算术运算符包括7种:十、一、×、\(除,只取除法运算结果之商)、MOD(模,只取除法运算结果之余数)、SHL(左移,左移1位相当于乘2)、SHR(右移,右移1位相当于除2)。注意:▲所有的算术运算符均可以对数据进行运算,运算对象与运算结果都是整数。▲若对地址运算,通常是在标号上加/减某一个数字量。一、算术运算符20§4-3汇编语言程序格式——算术运算符例数组ARRAY定义如下ARRAYDB1,2,3,4,5,6,7,8TRYDB20指令为:MOVAX,30*5MOVCX,(TRY-ARRAY)汇编时,计算表达式形成如下指令:MOVAX,150MOVCX,821§4-3汇编语言程序格式——算术运算符例汇编程序指令格式如下:DAEQU300MOVAX,DA-80MOVBX,DAMOD100MOVCX,DA/100MOVDH,01100100BSHR2汇编时,计算表达式形成指令为:DAEQU300MOVAX,220MOVBX,0MOVCX,3MOVDH,19H22§4-3汇编语言程序格式——逻辑运算符包括4种:AND(与)、OR(或)、NOT(非)、XOR(异或)注意:按位运算的,只能对常数进行运算,得到结果也是常数。二、逻辑运算符23§4-3汇编语言程序格式——逻辑运算符例MOVAL,NOT0FFHMOVBL,8CHAND73HMOVAH,8CHOR73HMOVCH,8CHXOR73H汇编时,计算表达式形成指令为:MOVAL,0MOVBL,0MOVAH,0FFHMOVCH,0FFH例INAL,PORT;PORT为输入端口号ANDDX,PORTAND0FEHOUTDX,AX;DX为输出端口号24§4-3汇编语言程序格式——关系运算符包括6种:EQ(相等)、NE(不等)、LT(小于)、GT(大于)、LE(小于或等于)、GE(大于或等于)。注意:•关系运算符的两个操作数必须是数据,或是同一段内的两个存储单元的地址;•若结果为真,输出全是l,即0FFH或0FFFFH;•若结果为假,输出全是0。三、关系运算符25§4-3汇编语言程序格式——关系运算符例MOVAX,10HGT16ADDBL,6EQ0110BMOVCX,((PORTLT5)AND100)OR((PORTGE5)AND200)汇编时,计算表达式形成指令为:MOVAX,0ADDBL,0FFHMOVCX,100;当端口5时26§4-3汇编语言程序格式——数值返回运算符数值返回运算符也称作分析运算符(Analyticopertors)。包括5种:OFFSET、SEG、TYPE、LENGTH、SIZE。功能:加在变量或标号前,返回运算对象的某个参数值。例如偏移地址值、段地址值、类型属性、变量包含的单元数等。1.OFFSET:格式:OFFSET变量或标号功能:返回标号或变量的偏移地址值。例若DA1为数据段中一个变量名MOVBX,OFFSETDA1;等价于LEABX,DA1四、数值返回运算符27§4-3汇编语言程序格式——数值返回运算符2.SEG:格式:SEG变量或标号功能:取变量或标号的段基值。例MOVAX,SEGM1MOVDX,AX解:设:M1是段名为DATA的数据段中的一个变量名;如DATA段从0500H开始,上述指令把0500H作为立即数在连接时插入指令;汇编后指令变为:MOVAX,0500HMOVDX,AX28§4-3汇编语言程序格式——数值返回运算符3.TYPE:格式:TYPE变量或标号功能:加在变量前,返回变量的类型属性;加在标号前,返回标号的距离属性。如下表所示。TYPE运算符返回值类型返回值变量DBDWDDDQ1248标号NEARFAR-1[FFH]-2[FEH]29§4-3汇编语言程序格式——数值返回运算符例A1DB20H,30HA2DW0438HA3DD?L1:MOVAH,TYPEA1MOVBH,TYPEA2ADDAL,TYPEA3MOVBL,TYPEL1汇编时,计算表达式形成指令为:MOVAH,1MOVBH,2ADDAL,4MOVBL,0FFH30§4-3汇编语言程序格式——数值返回运算符4.LENGTH:格式:LENGTH变量功能:当变量中使用DUP时,LENGTH返回此变量所包含的单元数,对其它变量则返回1。

1 / 78
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功