- 542.00 KB
- 2022-04-29 14:25:19 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
'四章汇编语言程序设计ppt课件
4.1概述机器语言(MechineLanguage):二进制表示的指令和数据。汇编语言(AssenblyLauguage):用助记符来编写指令,地址和数据也可用符号表示。用汇编语言编写的程序必须翻译成机器语言目标程序(或目标代码)才能执行,这种翻译过程称为汇编。(图4-1,P141)高级语言:不针对某个具体的计算机,通用性强。但高级语言编写的源程序同样必须“翻译”成机器语言,计算机才能执行,所用的系统软件称为编译程序或解释程序。
操作数常数/寄存器/存储器操作数(标号/变量)/表达式表达式:数值表达式(只有大小)和地址表达式(有段属性、偏移量属性和类型属性)算术运算符逻辑运算符关系运算符分析运算符合成运算符其它运算符(表4-1P146)
运算符之一:算术运算符+、-、*、/、MOD、SHL、SHR都可应用于数字运算。+、-可以用于表示存储器操作数的地址,或两个存储器单元(同一段内)的地址偏移量之差。例:SUM-2CYCLE-GO
运算符之二:逻辑运算符AND、OR、XOR、NOT按位的逻辑运算例:INAL,PORT_VALOUTPORT_VALAND0FEH,ALANDDX,PORT_VALAND0FEH
运算符之三:关系运算符EQ、NE、LT、GT、LE、GE用于数字或存储器操作数运算,结果为数字(0或0FFFFH)。例:MOVBX,PORTLT5MOVBX,((PORT_VALLT5)AND20)OR((PORT_VALGT5)AND30)
运算符之四:分析运算符SEG变量/标号(返回段基址)OFFSET变量/标号(返回偏移量)TYPE变量/标号(返回元素字节数)变量返回类型:1字节、2字、4双字标号返回类型:-1NEAR、-2FARLENGTH变量(返回变量单元数)SIZE变量(返回变量总字节数)
运算符之四:分析运算符DATA_TABLESSEGMENTBUFFER1DB100DUP(?)BUFFER2DW200DUP(?)BUFFER3DD100DUP(?)DATA_TABLESENDS-----------------------------------------------------------------------------------MOVAX,SEGBUFFER1(或BUFFER2,BUFFER3)MOVDS,AX-----------------------------------------------------------------------------------MOVBX,OFFSETBUFFER1MOVSI,OFFSETBUFFER2MOVDI,OFFSETBUFFER3MOV[BX],ALMOV[SI],CXMOVWORDPTR[DI],DXLENGTHBUFFER1=100LENGTHBUFFER2=200LENGTHBUFFER3=100SIZEBUFFER1=100SIZEBUFFER2=400SIZEBUFFER3=400
运算符之五:合成运算符PTR(修改类型属性)类型PTR表达式STUFFDD?MOVBX,WORDPTRSTUFFTHIS(指定类型属性)THIS类型ABCEQUTHISBYTEEFGDW100DUP(?);可以将100字的EFG按200字节的ABC来使用SHORT(短转移说明)JMPSHORT短标号HIGH和LOW:(高低字节分离)HIGH1234H=12HLOW1234H=34H段超越运算符“:”ES:[BX]
运算符之六:其它运算符圆括号()(改变运算符优先级)方括号[](下标或间接寻址)各种运算符运算的顺序(表4.2)优先级高的先运算优先级相同的按从左到右运算圆括号提高优先级
4.3汇编语言的伪指令语句符号定义伪指令数据定义伪指令段定义伪指令过程和宏定义伪指令模块定义与通信*条件汇编伪指令*列表伪指令
伪指令之一:符号定义伪指令EQU:将表达式的值赋予一个名字,不能重复定义CREQU0DH;常量AAEQUASCII_TABLE;变量VAREQUTEN*2+1024;数值表达式ADREQUES:[BP+DI+5];地址表达式GOTOEQUJMP;指令助记符=:与EQU基本相同,可以对一个名字重复定义NUM=488;定义NUM等于488NUM=NUM+1;定义NUM等于489
伪指令之二:数据定义伪指令格式:[变量名]伪操作操作数[,操作数]DB/DW/DD/DQ/DT:定义变量、分配存储单元等。操作数可以是:数值表达式或表、字符串、?、NDUP表达式1、为数据项分配存储单元NUMDW100*5+88SUMDQ0011223344556677
伪操作命令之二:数据定义伪指令2、预留存储单元但不赋值STRDB?SUMDW?3、定义数组ADB?,?,?BUFFERDB10DUP(?)ABDDDW10DUP(0)4、定义字符串STR1DB‘COMPUTER’STR2DW‘AA’,‘BC’,‘DE’5、定义标号或变量的偏移地址或全地址XXDWCYCLEYYDDCYCLE数据定义语句定义了变量的类型,可以使汇编程序对访问的存储器指令产生正确代码例:SUMDW0INCSUM
伪操作命令之二:数据定义伪指令分析操作符SEG、OFFSETTYPE、LENGTH、SIZE合成操作符PTRLABEL(定义一个指定类型的标号或变量)WBYTELABELWORDARRAYDB1,2,3,4MOVAL,ARRAY;01H->ALMOVAX,WBTYE;0201H->AXTHIS(与EQU配合使用具有LABEL同样的作用)BWORDEQUTHISBYTEARRAYDW100DUP(?)
伪操作命令之三:段定义伪指令段定义伪指令SEGMENT/ENDS段名SEGMENT[定位类型][组合类型][‘类别’]……….段名ENDS段名:一个段开始和结尾的段名必须一致,否则会出现语法错误定位类型:BYTE、WORD(偶地址开始)、PARA(XXXX0H)、PAGE(XXX00H)组合类型:NONE、PUBLIC(同名段组合成一个段)、COMMON(同名段重叠覆盖)、STACK、MEMORY(放在所有段最后)、AT表达式(指定起始地址)类别名CODE、DATA、STACK(同名同类别段连续存放)
伪操作命令之三:段定义伪指令段寄存器说明伪指令ASSUMEASSUME段寄存器名:段名[段寄存器名:段名[…..]]例:CODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKMAIN:……CODEENDSENDSMAIN;指定第一条要执行的指令标号注:1、该伪指令用于明确用SEGMENT定义的段的类型,使编译程序能生成目标代码程序。2、在源程序中,该伪操作放在可执行程序的前面。3、该指令没有给段寄存器赋予实际的初值。这项工作要通过写指令来完成,其中代码段不需要赋值。
伪操作命令之三:段定义伪指令组定义伪指令GROUP组名GROUP段名[,段名……]组内各段都装入一个64K的物理段中(P155)指定地址伪指令ORGORG表达式ORG$+表达式例:ORG10H;在10H处开始存放20H,30HXDB20H,30HORG$+5;在数据段17H处存放40H,50HYDB40H,50H
伪操作命令之四:过程和宏定义伪指令PROC过程名PROC[NEAR/FAR]…………….RET……………过程名ENDP注:1、程序块被定义后,可用CALL过程名的形式进行调用。2、过程名和标号一样,有三种属性:段、偏移量和类型。类型为NEAR和FAR,缺省为NEAR。3、过程的定义和调用可以嵌套,嵌套深度只受堆栈大小限制。
伪操作命令之四:过程和宏定义伪指令MACRO宏指令名MACRO[形参,形参……]…ENDM调用格式:宏指令名[实参,实参……]宏展开(例P158)宏的取消:PURGE宏定义名[,……]
伪操作命令之五:模块定义与通信伪指令模块定义伪指令格式:NAME标识符┇END启动标号模块通信伪指令(1)全局符号伪指令格式:PUBLIC符号名1,符号名2,…(2)引用伪指令格式:EXTRN符号名1:类型,符号名2:类型,……
4.4汇编语言程序设计程序设计的一般步骤分析问题,建立数学模型确定解决数学模型的算法画程序结构框图和流程图分配内存工作单元和寄存器编程和调试评价程序质量的标准程序的性能指标:响应时间、中间参数、输出方式和结果、安全可靠性等可读性和规范性:易于阅读、测试、维护、交流、移植、与其他程序连接和共享等
程序的基本结构顺序结构分支结构利用比较和转移指令实现分支利用跳转表实现分支(P170)根据表内地址分支根据表内指令分支循环结构记数控制条件控制状态控制逻辑尺控制
子程序设计与调用现场保护与恢复子程序中要用到主程序已使用并之后还需使用的某些寄存器或存储单元,需要将它们压入堆栈加以保护,结束后再恢复有关内容主程序与子程序的参数传递寄存器传递存储单元传递堆栈传递
子程序设计与调用子程序说明功能描述入口和出口参数所用寄存器和存储单元子程序中调用的其他子程序调用实例
DOS和BIOS调用DOS(DiskOperationSystem)和BIOS(BasicInputandOutputSystem)是为用户提供的两组系统服务程序。BIOS是IBMPC/XT的基本I/O系统,负责管理系统的测试程序、初始化引导程序、一部分中断矢量装入程序及外部设备的服务程序。由于这些程序固化在ROM中,用户可以直接调用。DOS是IBMPC/XT的操作系统,负责管理系统的所有资源,协调微机的操作,其中包括大量的可供调用的服务子程序,完成设备的管理和磁盘文件的管理。用户控制PC机硬件的方法:高级语言调用DOS程序使用BIOS程序直接访问硬件
DOS系统功能调用(INT21H)调用方法1、子程序规定的入口参数送指定的寄存器。2、系统功能调用号送AH3、INT21H字符输出1、利用02H功能在CRT上显示一个字符。要求:(AH)=02H,(DL)=欲输出字符的ASCII码例:MOVDL,41H;’A’MOVAH,02HINT21H
DOS系统功能调用(INT21H)2、利用09H功能在CRT上显示一个字符串要求:(AH)=09H,(DX)=欲输出字符串的首址,字符串以‘$’结束。例DATASEGMENTSTRINGDB‘HELLOEVERYBODY!$’……….DATAENDS……….CODESEGMENTASSUMEDS:DATA,SS:STACK,CS:CODE……….MOVDL,OFFSETSTRINGMOVAH,09HINT21H………..CODEENDSEND……..
DOS系统功能调用(INT21H)字符输入1、利用0AH功能从键盘输一个字符入内存。要求:(AH)=0AH,(DX)=输入缓冲区首址数据段中的输入缓冲区:第一个字节为所能保存的最大字符数第二个字节为实际接收的字符个数保留的单元第三个字节为所输入的第一个字符的ASCII码…………………….……………………..
DOS系统功能调用(INT21H)例DATASEGMENTINBUFFERDB81DB?DB80DUP(?)……….DATAENDS……….CODESEGMENTASSUMEDS:DATA,SS:STACK,CS:CODE……….MOVDX,OFFSETINBUFFERMOVAH,0AHINT21H………..CODEENDSEND……..
DOS系统功能调用(INT21H)程序中断1、利用4CH功能返回DOS。要求:(AH)=4CH,CODESEGMENT…………MOVAH,4CHINT21HCODEENDS
DOS系统功能调用2、利用INT20H功能返回DOS。例:CODESEGMENTASSUME:…………MYPRPROCFARPUSHDSSUBAX,AX;MOVAX,0PUSHAX…….RETMYPRENDPCODEENDSEND…….
结束语谢谢大家聆听!!!39'
您可能关注的文档
- 最新品管圈知识ppt课件PPT课件
- 最新品管工具ppt课件PPT课件
- 最新哮喘 PPT课件PPT课件
- 最新哮喘--针灸学课件南京中医药大学ppt课件PPT课件
- 最新哲学与生活课件PPT课件
- 最新哲学知识体系ppt课件PPT课件
- 最新唯物和唯心课件PPT课件
- 最新四章数组与指针ppt课件PPT课件
- 最新四章显示仪表ppt课件PPT课件
- 最新四章法的渊源形式和效力ppt课件PPT课件
- 最新四章河流水质模型ppt课件PPT课件
- 最新四章空间数据库索引技术3ppt课件PPT课件
- 最新四章风险与报酬衡量ppt课件PPT课件
- 最新四级作文应用文写作ppt课件PPT课件
- 最新四级写作技巧综合版ppt课件PPT课件
- 最新四级翻译ppt课件PPT课件
- 最新四级考试语法复习重点2ppt课件PPT课件
- 最新四级阅读攻略ppt课件PPT课件