您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 计算机原理-第4章 8086汇编语言程序设计
第四章8086汇编语言程序设计几个概念8086汇编语言的语句8086汇编中的伪指令8086汇编中的运算符汇编语言程序设计宏定义与宏调用系统调用几个概念汇编语言汇编语言源程序汇编汇编程序4.18086汇编语言的语句汇编语言由指令性语句和指令性语句组成一、指令性语句格式[标号:]操作码[操作数1,][操作数2];[注释]二、指示性语句格式[标识符(名字)]指示符(伪指令)表达式三、有关属性存储器操作数的属性有三种:段值、段内偏移量和类型。4.28086汇编中的伪指令一、符号定义语句1、等值语句格式:符号名EQU表达式例:⑴PORTEQU1234⑵BUFFEQUPORT+58⑶MEMEQUDS:[BP+20H]⑷COUNTEQUCX⑸ABCEQUAAA2、等号语句格式:NUM=34……NUM=34+1二、变量定义语句格式:符号名DB/DW/DD表达式1、定义一组数据例1:BUFFDW1234H,0ABCDH,8EHDW–79DH,7B6AH2、定义一串字符例2:STRDB‘Welcome!’3、定义保留存储单元例3:SUMDW?,?4、复制操作复制操作符DUP(Duplication)可预置重复的数值例4:ALL_ZERODB0,0,0,0,0用复制操作可改为:ALL_ZERODB5DUP(0)5、将已定义的地址存入内存单元例5:LITDDCYC…CYC:MOVAX,BX三、段定义语句1、段定义语句格式:段名SEGMENT[定位类型][组合类型][‘类别’]……段名ENDS只需要掌握段名SEGMENT……段名ENDS2、段假设语句ASSUME段寄存器名:段名[,…]3、ORG伪指令、地址计数器$ORG伪指令格式:ORG表达式4、END表示源代码结束格式为:END常数或表达式.四、过程定义语句过程名PROCNEAR/FAR……RET过程名ENDP4.38086汇编中的运算符一、常用运算符1、算术运算符+(加)、-(减)、*(乘)、/(除)、MOD(求余)。2、逻辑运算符AND、OR、XOR、NOT3、关系运算符EQ(相等)、NE(不等、)LT(小于)、GT(大于)、LE(小于等于)、GE(大于等于)。关系成立,全1关系不成立,全0例:MOVDL,10HLT16例:ANDAX,555GT222二、常用的操作符4、分析操作符1)SEG操作符例:MOVAX,SEGBUFF2)OFFSET操作符例:MOVBX,OFFSETBUFF3)TYPE操作符对于变量有3种:1字节型;2字型;4双字型;对于标号有2种:-1NEAR(段内),-2FAR(段间)。例:BUFFDB20HMOVBX,TYPEBUFFMOVBX,014)LENGTH操作符5)SIZE操作符SIZE=TYPE×LENGTH例:BUFFDB10DIP(?)MOVCX,LENGTHBUFMOVCX,10MOVCX,SIZEBUFMOVCX,205、综合运算符(合成操作符)功能:1、由已有的操作数建立新的操作数;2、新操作数和已有的操作数类型不一样1)PTR运算符格式:类型PTR表达式例:INCWORDPTR[BX]wxdw1234hmoval,byteptrwxmovah,byteptrwx+12)THIS操作符格式:THIS类型(或属性)例:FIRSTEQUTHISBYTESECONDDW100DUP(?)4.4汇编语言程序设计常用的汇编语言程序框架:DATASEGMENT;定义数据段VAL1DB12H,8EH;定义变量……DATAENDS;数据段结束CODESEGMENT;定义代码段ASSUMEDS:DATA,CS:CODE;段属性说明START:MOVAX,DATA;初始化DSMOVDS,AX……MOVAX,4C00H;返回DOSINT21HCODEENDS;代码段结束ENDSTART;源程序结束特点程序分段语句由指令性和指示性语句组成两种程序框架一、汇编语言程序设计基本步骤1.分析问题,确定模型2.确定算法3.绘制流程图4.编写程序5.检查和调试二、汇编语言程序的基本结构1、顺序结构举例完成x1*x2x3x1:bytex2:wordx334bit2、分支结构举例实现100010xyxx用查表法确定分支a、对8种产品进行编号0,1,……7b、每一个编号对应一个入口地址proc0,proc1,……proc7步骤:a、把入口地址放在Table开始的内存单元;b、根据key内容进行查表实现分支转移3、循环结构举例例1、计算y=0+2+4+……+1998ydxax查找数组中是否由关键字,有:变量dd1=1;dd2:关键字偏移量无:变量dd1=0方法一、用loopnz(loopne)指令方法二、用loop指令Callproc1ret实现方法主程序有调用指令call子程序有返回指令ret特点Call指令与ret缺一不可现场保护入口出口参数设置举例编写AX*10AX子程序子程序编写1、子程序组成使用说明•a、子程序功能•b、使用寄存器情况•c、入口出口参数程序体•入口出口参数传递•现场保护•功能程序段2、现场保护和入口出口参数传递(1)、现场保护•方案一:在子程序中保护•方案二:在主程序中保护(2)、参数传递•寄存器传递•变量传递•堆栈传递举例1、数组元素求和2、计算N!4.4系统调用一、PCDOS执行流程键盘命令命令处理程序文件管理基本输入/输出BIOS用户程序用户程序ROMIBMBIOIBMDOSBIOSIBMBIOIBMDOS二、DOS系统子程序功能1、磁盘管理2、内存管理3、系统输入/输出共87个子程序三、系统功能调用对87个子程序进行编号,根据编号进行相关处理格式1、入口参数2、编号ah3、INT21H编号ahINT21ah=11号调用ah=22号调用常用的系统调用1、1号调用-键盘输入2、8号调用3、5号调用-打印4、6号调用-显示及输入5、9号调用-输出字符6、10号调用-输入字符串4.5宏定义与宏调用一、宏定义和宏调用1、格式宏指令名macro[参数表]…;宏定义体endm2、优点缩短源程序长度,但不减少代码长度;程序易读3、参数可以是多种形式二、宏定义取消伪操作格式purge宏命令名1,宏命令名2,…三、重复伪操作格式rept表达式;重复块endm四、不定重复伪操作格式irp形参,参数表;重复块endm五、串重复伪操作格式irpc形参,字符串;重复块endm条件汇编格式if表达式…else…endif常用的汇编程序举例1、找数组中的最大值2、中值滤波3、把一字节十六进制数转换为ASCII码4、排序5、乘法6、除法7、二进制到十进制8、十进制到二进制编写子程序bcddiv10,把dx中的四位bcd码除10,并四舍五入。
本文标题:计算机原理-第4章 8086汇编语言程序设计
链接地址:https://www.777doc.com/doc-3675242 .html