《自助文印解决方案与图书馆自助化服务结合与发展.pptx》由会员分享,可在线阅读,更多相关《自助文印解决方案与图书馆自助化服务结合与发展.pptx(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、主要内容几个基本概念几个基本概念汇编语言程序的组成元素汇编语言程序的组成元素MASMMASM中的表达式中的表达式常用伪指令常用伪指令功能调用功能调用汇编语言程序设计汇编语言程序设计第1页/共47页几个概念汇编语言汇编语言源程序汇编汇编程序第2页/共47页4.1 汇编语言程序的组成元素1 1、汇编语言语句类型、汇编语言语句类型指令性语句指示性语句CPUCPU执行的语句,能够生成执行的语句,能够生成目标代码,核心是目标代码,核心是指令系统指令系统中的指令。中的指令。CPUCPU不执行,而由汇编程不执行,而由汇编程序执行的语句,不生成目序执行的语句,不生成目标代码,核心是标代码,核心是伪指令。伪指令
2、。第3页/共47页 指令性语句:标号:前缀 助记符 操作数,操作数 ;注释指令的符号地址,标号后要有冒号操作码注释前加分号第4页/共47页指示性语句名字 伪指令助记符 操作数,操作数,;注释变量的符号地址,其后不加冒号指示性语句中至少有一个操作数第5页/共47页标号、名字标号后有冒号,在指令性语句前;名字后标号后有冒号,在指令性语句前;名字后不加冒号,在指示性语句前。不加冒号,在指示性语句前。英文字母、数字及专用字符组成英文字母、数字及专用字符组成,最大长最大长度不能超过度不能超过3131个个,且不能由数字打头且不能由数字打头,不能不能用保留字用保留字(如寄存器名如寄存器名,指令助记符指令助记
3、符,伪指令伪指令)。第6页/共47页2 2、汇编语言中的数据项、汇编语言中的数据项常数确定的数据,无属性;常数确定的数据,无属性;变量存放在存储单元中的值。有段变量存放在存储单元中的值。有段 值、偏移地址和类型三个属性;值、偏移地址和类型三个属性;标号可执行指令语句的地址的符号表标号可执行指令语句的地址的符号表 示。有段值、偏移地址和类型示。有段值、偏移地址和类型 (近、远)三个属性。(近、远)三个属性。第7页/共47页4.2 MASMMASM中的表达式中的表达式 汇编程序可以识别的能够在汇编程序可以识别的能够在指令和为指令中出现的运算对象指令和为指令中出现的运算对象及运算符。及运算符。第8页
4、/共47页1、算术运算和逻辑运算符算术运算符+,-,*,/,MOD逻辑运算符 AND,OR,NOT,XOR例:MOV AL,8 AND 4 MOV AL,8+4-1第9页/共47页2、关系运算符参与关系运算的必须是两个数值;关系不成立,结果为0;关系成立,结果为FFFFH。EQEQNENELTLTGTGTLELEGEGE第10页/共47页3、数值返回运算符取值取值运算符运算符 用于分析存储器操作数的属性用于分析存储器操作数的属性OFFSET OFFSET 取得其后变量或标号的偏移地址取得其后变量或标号的偏移地址SEG SEG 取得其后变量或标号的段地址取得其后变量或标号的段地址TYPE TYP
5、E 取取变量的类型变量的类型变量的类型变量的类型LENGTH LENGTH 取所定义的存储区的长度取所定义的存储区的长度SIZE SIZE 取所定义存储区的字节数取所定义存储区的字节数第11页/共47页取值运算符例 MOV AX,SEG DATA MOV DS,AX MOV BX,OFFSET DATA LEA BX,DATA等价于等价于第12页/共47页取值运算符例若BUFFER存储区是用如下伪指令定义:BUFFER DW 200 DUP(0)则:TYPE BUFFER 等于2 LENGTH BUFFER等于200 SIZE BUFFER等于400第13页/共47页4、属性运算符属性运算符属
6、性运算符PTRPTR 用于指定其后存储器操作数的类型用于指定其后存储器操作数的类型例:例:MOV BYTE PTRBXMOV BYTE PTRBX,12H12H第14页/共47页5、其它运算符(),等6、运算符的优先级次序第15页/共47页4.3 4.3 常用伪指令常用伪指令由汇编程序执行的“指令系统”用于定义变量、分配存储区、定义逻辑段、指示程序开始和结束等。第16页/共47页常用伪指令数据定义伪指令符号定义伪指令段定义伪指令过程定义伪指令结束伪指令第17页/共47页1、数据定义伪指令用于定义数据区中变量的类型格式:变量名 伪指令助记符 操作数,;注释某些情况某些情况下可省略下可省略可选可选
7、第18页/共47页数据定义伪指令助记符DB DB 定义的变量为定义的变量为字节型字节型DW DW 定义的变量为定义的变量为字类型(双字节)字类型(双字节)DD DD 定义的变量为定义的变量为双字型(双字型(4 4字节)字节)DQ DQ 定义的变量为定义的变量为4 4字型(字型(8 8字节)字节)DT DT 定义的变量为定义的变量为1010字节型字节型第19页/共47页数据定义伪指令例DATA1 DB 11H,22H,33H,44HDATA2 DW 11H,22H,3344HDATA3 DD 11H*2,22H,33445566H以上变量在内存以上变量在内存中的存放形式中的存放形式第20页/共4
8、7页伪指令的性质决定所定义变量的属性;定义字符串必须用DB伪指令例:DATA1 DB ABCD,66HABCD41H42H43H44H66H第21页/共47页重复操作符为一个数据区的各单元设置相同的初值格式:变量名 伪指令助记符 n DUP(初值,)例:DW 20 DUP(0)DB 3 DUP(22H,11H,?)随机数第22页/共47页用?预留存储空间MEM1 DB 34H,A,?,?,?DW 20 DUP(?)预留预留4040个字节单元个字节单元第23页/共47页2、符号定义伪指令格式:符号名 EQU 表达式操作:用符号名取代后边的表达式,不可重新定义例:CONSTANT EQU100 V
9、AR EQU 30H+99HEQU说明的表达式不占用内存空间第24页/共47页3、段定义伪指令 段定义语句格式:段定义语句格式:段名段名 SEGMENT SEGMENT 定位类型定位类型 组合类型组合类型 类别类别 段名段名 ENDSENDS只需要掌握只需要掌握 段名段名 SEGMENT SEGMENT 段名段名 ENDSENDS第25页/共47页段定义伪指令例DATA SEGMENT MEM1 DB 11H,22HDATA ENDS第26页/共47页段分配语句:格式:格式:格式:格式:ASSUME ASSUME ASSUME ASSUME 段寄存器名:段名段寄存器名:段名段寄存器名:段名段寄
10、存器名:段名 ,段寄存器名:段名,段寄存器名:段名,段寄存器名:段名,段寄存器名:段名,4、结束伪指令 格式:END 标号第27页/共47页5、过程定义伪指令用于定义一个过程体格式:过程名 PROC NEAR/FAR RET 过程名 ENDP过程入口的符号地址第28页/共47页6、其它伪指令ORG-段内程序代码或变量的起始偏移地址格式:ORG 表达式例:ORG 2000H计算值为非负常数第29页/共47页4.4 4.4 功能调用功能调用DOS DOS 功能调用功能调用 高级调用,操作系统提供高级调用,操作系统提供BIOSBIOS功能调用功能调用 低低级调用级调用第30页/共47页DOS 系统功
11、能调用包含多个子功能的功能包,用软中断指令调用,中断类型码固定为21H;各子功能采用功能号来区分。第31页/共47页DOS 系统功能调用主要功能设备管理目录管理文件管理其它第32页/共47页DOS 系统功能调用步骤 (1)MOV AH,功能号 (2)(3)INT 21H第33页/共47页1.从键盘输入单字符并显示调用方法:MOV AH,01 INT 21H输入的字符在AL中第34页/共47页单字符输入例GET_KEY:GET_KEY:MOV MOVAH,1AH,1 INTINT21H21H CMP CMPAL,AL,Y Y JZ JZ YESYES CMP CMPAL,AL,NN JZ JZ
12、NONO JNZ JNZGET_KEYGET_KEY YES:YES:NO:NO:交互式应 答程序第35页/共47页2.从键盘输入字符串AH 功能号OAHDS:DX 字符串在内存中的存放地址INT 21H第36页/共47页定义字符缓冲区 用户自定义缓冲区格式:用户自定义缓冲区格式:0DHN1N2整个缓冲区最大键入字符数实际键入字符数第37页/共47页输入字符串程序段 DAT1 DB 20,?,20 DUP(?)LEA DX,DAT1 MOV AH,0AH INT 21H在数据段中定义第38页/共47页输入缓冲区14H?20个字节定义后的输入缓定义后的输入缓冲区初始状态:冲区初始状态:第39页/
13、共47页3.单字符显示输出AH 功能号O2HDL 待输出字符INT 21H第40页/共47页单字符显示输出例 MOVAH,02 MOVDL,41H INT21H执行结果:屏幕显示A第41页/共47页4.字符串输出显示AH 功能号O9HDS:DX 待输出字符串的偏移地址INT 21H第42页/共47页字符串输出显示被显示的字符串必须以$结束,且所显示的内容不应出现非可见的ASCII码第43页/共47页字符串输出显示例DATA SEGMENTMESS1 DB Input String:0DH,0AH,$DATA ENDSCODE SEGMENT MOV AH,09MOV DX,OFFSET MESS1INT21H 第44页/共47页4.5 汇编语言程序设计设计步骤:根据实际问题抽象出数学模型确定算法画程序流程图 分配内存工作单元和寄存器程序编码调试第45页/共47页在计算机上进行程序设计过程D:masmEDIT 输入源程序D:masmMASM 汇编D:masmLINK 链接D:masmTD 调试第46页/共47页感谢您的观看!第47页/共47页
限制150内