版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第五章 汇编语言程序设计,第五章 汇编语言程序设计 要求: 了解汇编语言的基本知识和特点。 熟悉汇编语言的程序结构、段定义以及语句 的格式。 掌握汇编语言常用伪指令的使用方法。 熟练掌握汇编程序设计的基本方法:顺序结 构、分支结构、循环结构和子程序结构。 了解程序设计中常用的系统功能调用方法。,主要内容: 一、汇编语言语法 1、汇编语言程序的格式 2、汇编语言指令格式 3、伪指令 4、汇编语言的运算符 二、汇编语言程序设计 1、汇编语言源程序的结构 2、基本程序设计方法 顺序程序设计 分支程序设计 循环程序设计 子程序 系统调用 3、汇编语言程序设计举例,第五章 汇编语言程序设计,第五章 汇编
2、语言程序设计,二、汇编语言程序设计 1、汇编语言源程序的结构概述 2、基本程序设计方法 顺序程序设计 分支程序设计 循环程序设计 子程序 系统调用 3、汇编语言程序设计举例,二、汇编语言程序设计 1、汇编语言源程序的结构 (1)代码段、数据段、堆栈段、附加段 (2)举例: STACK SEGMENT PARA STACKSTACK DB 500DUP(0) STACK ENDS DATA SEGMENT DATA ENDS ESDATA SEGMENT ESDATA ENDS,第五章 汇编语言程序设计,CODE SEGMENT MAIN ASSUME CS:CODE,DS:DATA, ES:E
3、SDATA,SS:STACK MOV AX,DATA MOV DS,AX MOV AX,ESDATA MOV ES,AX CODE ENDS END MAIN,(1)必须用ASSUME伪指令告诉汇编程序,哪一个段和哪一个段寄存器相对应,即某一段地址应放入哪一个段寄存器。 (2)DOS的装入程序在装入执行时,将把CS初始化为正确的代码段地址,把SS初始化为正确的堆栈段地址,因此在源程序中不需要再对它们进行初始化,数据段要初始化。 MOV AX,DATA MOV DS,AX,第五章 汇编语言程序设计,第五章 汇编语言程序设计,2、基本程序设计方法 顺序程序设计 顺序程序结构是指完全按指令存放顺序逐
4、条执行指令序列。 例10 将2个用ASCII码表示的十进制数转换为对应的数值。 设2个数存放在存储单元,转换回存存储单元。程序如下: DATA SEGMENT N DB 38H,32H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX AND N,BYTE PTR 0FH AND N+1,BYTE PTR 0FH,MOV AX, 4CH INT 21H CODE ENDS END START,第五章 汇编语言程序设计, 分支程序设计 分支程序的结构形式 分支程序设计方法 程序的分支一般用条件转移指
5、令实现。 例11 将一位用ASCII码表示十六进制数转换为对应的数值。,图5.5 分支结构流程图,第五章 汇编语言程序设计,DATA SEGMENT ACS DB 45H NUM DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL, ASC SUB AL, 48h CMP AL, 10,JC DONE SUB AL, 7 DONE: MOV NUM, AL MOV AX,4C00H INT 21H CODE ENDS END START,例 12 编写符号函数,即:,第五章
6、汇编语言程序设计,DATA SEGMENT X DB 12 Y DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX CMP X,BYTE PTR 0 JG GREAT JL LESS MOV AL,0 JMP DONE GREAT:MOV AL,1 JMP DONE,LESS:MOV AL,-1 DONE:MOV Y,AL MOV AX,4C00H INT 21H CODE ENDS END START,第五章 汇编语言程序设计, 循环程序设计 循环程序的结构形式 循环程序的结束条件 循环
7、程序设计,例 14 统计字符串长度 设字符串存放在偏移地址从STR开始的连续存储单元中,并以“$”作为结束符,字符串长度不包含结束符。程序流程如图5.9所示。程序如下:,第五章 汇编语言程序设计,DATA SEGMENT STR DB Personal Computer, $ STRLEN DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV CL, 0 LEA BX, STR NEXT: MOV AL, BX CMP AL, $ JZ DONE,INC BX INC CL JMP
8、NEXT DONE: MOV STRLEN, CL MOV AX,4C00H INT 21H CODE ENDS END START,第五章 汇编语言程序设计,例16 二进制数转换为BCD码程序:将16位二进制数转换为非压缩BCD码,存放到存储单元中。 设16位二进制数存放在BX寄存器中,转换的非压缩BCD码存放在以NBCD开始的存储单元中。程序如下:,DSEG SEGMENT NBCD DB 5 DUP(?) DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG START:MOV AX,DSEG MOV DS,AX MOV AX,BX MOV CX,L
9、ENGTH NBCD LEA SI,NBCD ADD SI,CX DEC SI,MOV CX,10 NEXT: CMP AX,10 JC DONE XOR DX,DX DIV CX MOV SI,DL DEC SI JMP NEXT DONE:MOV SI,AL MOV AX,4C00H INT 21H CSEG ENDS END START,第五章 汇编语言程序设计, 子程序,概述: 子程序定义:程序功能和结构形式都相同,只是某些参数不同。 主程序定义:调用子程序的程序。 子程序可调用另外子程序,形成程序的调用嵌套。,第五章 汇编语言程序设计, 定义过程的伪指令PROC和ENDP 格式: 过
10、程名 PROC类型 ;过程体 RET 过程名 ENDP 举例:DATASEG SEGMENT DB ? DATASEG ENDS CODESEG SEGMENT PROCEDURE_NAME PROC FAR ASSUME CS:CODESEG,DS:DATASEG START: PUSH DS,XOR AX, AX PUSH AX MOV AX,DATASEG MOV DS,AX RET PROCEDURE_NAME ENDP,第五章 汇编语言程序设计, 子程序设计 子程序会缩短整个源程序和目标代码的长度,但会由于调用子程序及从子程序返回而增加程序的执行时间。 子程序设计要注意的问题: (1
11、)现场保护与恢复。 (2)参数传递。 (3)栈平衡。, 近(NEAR)调用:调用程序和被调用程序的子程序在同一个代码段内。,第五章 汇编语言程序设计,CODESEG SEGMENT MAIN_NAME PROC FAR ASSUME CS:CODESEG START:PUSH DS XOR AX, AX PUSH AX CALL SUB_NAME RET,MAIN_NAME ENDP SUB_NAME PROC NEAR RET SUB_N AME ENDP CODESEG ENDS END START,第五章 汇编语言程序设计,远(FAR)调用:调用程序和被调用程序的子程序不在同一个代码段。
12、,CODESEG1 SEGMENT PRO1_NAME PROC FAR ASSUME CS:CODESEG1 START:PUSH DS XOR AX, AX PUSH AX CALL PRO2_NAME RET PRO1_NAME ENDP CODESEG1 ENDS,CODESEG2 SEGMENT PRO2_NAME PROC FAR ASSUME CS:CODESEG2 BEGIN:PUSH DS XOR AX, AX PUSH AX RET PRO2_NAME ENDP CODESEG2 ENDS END START,第五章 汇编语言程序设计,例17 设计一个子程序:将一位十六进制
13、数转换为对应的ACSII码。 将要转换的十六进制数存放在DL中,子程序的入口参数为DL。这就是通过寄存器传递参数。,DTASC PROC ADD DL,30H CMP DL,39H JC FIN ADD DL,7 FIN :RET DTASC ENDP,例18 设计具有子程序调用的程序:调用子程序PROADD完成对长度为LEN的数组ARRAY的元素求和,并将和存放在存储单元SUM中。 此程序主程序和子程序通过堆栈传递参数。程序设计如下:,第五章 汇编语言程序设计,MYDATA SEGMENT ARRAY DW 20 DUP(?) LEN DW ? SUM DW 2 DUP(?) MYDATA
14、ENDS MYCODE SEGMENT ASSUME CS:MYCODE,DS:MYDATA START: MOV AX,MYDATA MOV DS,AX MOV AX,OFFSET ARRAY PUSH AX MOV AX,OFFSET LEN PUSH AX,MOV AX,OFFSET SUM PUSH AX CALL FAR PTR PROADD MOV AX,4C00H INT 21H MYCODE ENDS,第五章 汇编语言程序设计,SUBCODE SEGMENT ASSUME CS:SUBCODE PORADD PROC FAR PUSH BP MOV BP,SP MOV SI,1
15、0BP MOV CX,8BP MOV DI,6BP OR AX,AX MOV DX,AX ADD AX,SI JNC NOCAY INC DX,NOCAY: INC SI INC SI LOOP NEXT MOV DI,AX MOV 2DI,DX POP BP RET 6 PROADD ENDP SUBCODE ENDS END START,第五章 汇编语言程序设计, 系统功能调用,系统提供两种功能调用: DOS(Disk Operating System) BIOS (Base Input/Output System),系统功能调用和用户程序的关系示意图, DOS(Disk Operatin
16、g System)高级功能调用 作用:对输入/输出设备读写操作,检查硬盘目录,创建和删除文件,读写文件中的记录,设置和读实时时钟等 (1)调用格式 MOV AH ,功能号 对各寄存器设置调用参数 INT 21H,第五章 汇编语言程序设计,(2)常用的一些功能调用,第五章 汇编语言程序设计,(3)DOS功能调用基本步骤: 1)设置功能号,并装入AH。 2)设置调用(入口)参数, 装入指定的寄存器。 3)使用中断指令INT 21H。 4)检查返回(出口)参数。 例5.22 从键盘输入一个字符,保存到存储单元。设存储单元偏移地址为ASC,程序段,(3)DOS功能调用基本步骤: 1)设置功能号,并装入
17、AH。 2)设置调用(入口)参数, 装入指定的寄存器。 3)使用中断指令INT 21H。 4)检查返回(出口)参数。 例19 从键盘输入一个字符,保存到存储单元。设存储单元偏移地址为ASC,程序段 MOV AH, 1 INT 21H MOV ASC, AL 例20 将存储单元中的一串字符显示在屏幕上。设串长为LEN(65536),串首地址偏移为STR。DOS的串显示要求串要以字符$为结束符。,第五章 汇编语言程序设计,MOV AH,9 LDS DX, STR MOV CX, LEN MOV BX, DX ADD BX, CX MOV BYTE PTRBX, $ INT 21H BIOS (Base Input/Output System)低级功能调用 (1)调用格式 MOV AH ,功能类型 对各寄存器设置调用参数 INT 中断类型 (2)常用的一些BIOS功能调用。,第五章 汇编语言程序设计,第五章 汇编语言程序设计,(3)BIOS功能调用基本步骤: 1)设置功能号,并装入AH
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 焊接作业安全准则
- 某铝型材厂技术规范制度
- 企业上市安全生产讲解
- 消防安全记录规范模板
- 福尔曼大学就业前景
- 《开开心心上学去》分层作业(含答案)-2026-2027学年统编版小学道德与法治一年级上册(新教材)
- 越南语就业趋势分析
- 应急科普知识大全
- 妊娠恶阻护理
- 企业课程实施管控方案
- JT-T-537-2018钢筋混凝土阻绣剂
- DL-T573-2021电力变压器检修导则
- 美的集团第-级公司分权手册
- 在灿烂阳光下混声合唱简谱
- 2024年湖北交通投资集团有限公司招聘笔试参考题库含答案解析
- 210Pb沉积物定年方法简介
- 旅行社公司章程
- 国开电大本科《理工英语4》机考总题库
- 中风病人的饮食宣教
- 管理者如何带好团队
- 烈士陵园改造技术标
评论
0/150
提交评论