【计算机】汇编语言程序设计(1)_

上传人:艾力 文档编号:56833127 上传时间:2018-10-16 格式:PPT 页数:95 大小:1.16MB
返回 下载 相关 举报
【计算机】汇编语言程序设计(1)__第1页
第1页 / 共95页
【计算机】汇编语言程序设计(1)__第2页
第2页 / 共95页
【计算机】汇编语言程序设计(1)__第3页
第3页 / 共95页
【计算机】汇编语言程序设计(1)__第4页
第4页 / 共95页
【计算机】汇编语言程序设计(1)__第5页
第5页 / 共95页
点击查看更多>>
资源描述

《【计算机】汇编语言程序设计(1)_》由会员分享,可在线阅读,更多相关《【计算机】汇编语言程序设计(1)_(95页珍藏版)》请在金锄头文库上搜索。

1、1,第三章 汇编语言程序设计第一节 汇编语言上机过程 第二节 汇编语言程序结构 第三节 指示性语句 第四节 汇编语言程序举例 第五节 BIOS和DOS功能调用 第六节 汇编语言程序设计,2,作业: 3-2 , 3-6 , 3-7 , 3-9, 3-12 复习内容: P97-P114 预习内容: P114-P140 P145-147(不作要求,自学),3,4,第一节 汇编语言上机过程D:EDIT ABC.asm D:MASM ABC;有语法错,回EDIT下改该程序 D:LINK ABC;有错,回在EDIT下改程序 D:ABC运行结果错,回EDIT下改程序或在DEBUG下调试,找原因。 D:DEB

2、UG ABC.exe,5,第二节 汇编语言程序结构 一、程序结构 二、语句结构,6,汇编语言程序结构例一程序: movs.asm功能: 实现数据传送功能数据段1 传送到 数据段2目的: 学习程序结构,7,一、程序结构程序由数条语句构成,每条语句占一行。指令性语句(指令语句)指示性语句(伪指令语句)分段结构程序按段编写, 与8088内存分段编址相对应。每段由伪操作SEGMENT开始、由ENDS结束。程序最后为END结束语句,后跟一启动地址。启动地址指示程序开始执行的第一条语句。程序中设有返回DOS的功能。使程序执行完后返回DOS系统的命令接受状态。程序中用到内存操作数时,应按操作数的寻址方式,给

3、相应的段寄存器赋值,;汇编语言程序结构例一 movs.asm ;实现数据传送功能 aa SEGMENT ;数据段1 str1 DB Hello! aa ENDS bb SEGMENT ;数据段2 str2 DB 6 dup (?) bb ENDS cc SEGMENT ;代码段ASSUME CS:cc, DS:aa, ES:bb start: CLD MOV AX , aa MOV DS , AX LEA SI , str1 MOV AX , SEG str2 MOV ES , AX MOV DI ,OFFSET str2 MOV CX , 6 REP MOVSB MOV AH , 4CH I

4、NT 21H ;返回DOS cc ENDS END start ;指示程序结束,8,汇编语言程序结构例二程序: scans.asm (子程结构) 子程内容: 用二进制显示BX内容功能: 实现用二进制显示中断向量表中(0:00:3FFH)数据D0H的个数目的: 了解程序可由多个段构成,9,10,二、语句结构,11,1. 名字项 据语句功能的不同,名字项可用来表示:段名、变量名、标号、过程名以及常量名等。,data SEGMENT ; 数据段 var DB ? data ENDS code SEGMENT ;代码段ASSUME CS:code,DS:data start: MOV AX, data

5、MOV DS , AX MOV var, CLMOV AH , 4CH INT 21H ;返回DOS code ENDS END start,12,名字项用一个符号表示。对符号的规定: 由字符AZ ,az ,09及符号、$、下划线_ 等组成,最长31个字符,超出部分忽略。 不能用数字打头,以免与十六进制数相混。 不使用汇编程序中的保留字。 (如指令的助记符等) 对定义的符号不区分大小写。,13,2. 助记符项助记符可以是指令、伪操作中的助记符。,对于指令,汇编程序将其翻译成机器语言指令。MOV AX, 100 B8 00 01,对于伪操作,汇编程序据其要求的功能进行处理。data SEGMEN

6、T data与一段值对应string DB Tsinghua string与一内存地址对应,14,3操作数项操作数给出参与操作的数或数所在的地方。操作数多于一个时,用逗号分开。操作数可以是常数、寄存器、存储器操作数、标号名、过程名或表达式等。,15,16,17,4注释项 由分号引出,用来说明语句或程序的功能。汇编程序对分号后的内容不做处理。 作用: 注释程序,增强程序可读性。可放在语句最前,暂时注释某语句,调试程序用。 例 、; MOV AH, 2 ;显示提示信息; MOV DL, A; INT 21H、,18,第三节 指示性语句 / 第四节 汇编语言程序举例 一、程序开始和结束 二、段定义

7、三、变量定义 四、ASSUME语句 汇编语言程序举例一了解DOS的返回,装入功能 五、表达式及表达式中的操作符 汇编语言程序例二 六、过程定义 (第五节程序设计介绍) 七、等值定义 (第五节程序设计介绍) 汇编语言程序例三 (第五节程序设计介绍),19,指示性语句与指令性语句: 指令性语句是用指令系统中的指令构成的语句。例 MOV AX, BX 指示性语句是指示汇编程序进行汇编的操作。例 MOV AX, 4 + 8 中的+code SEGMENT 中的SEGMENTMOV BX, OFFSET string 中的OFFSET,20,指示性语句与指令性语句区别 一个程序经汇编,连接和装入内存后,

8、在执行程序之前:指示性语句的功能已经完成,故又称伪操作。 而指令性语句的功能尚未完成,需控制CPU去执行,才能完成。,21,22,常用伪操作介绍一、程序开始和结束 二、段定义 三、变量定义 四、ASSUME语句 五、表达式中的操作符 六、过程定义 七、等值定义,23,一、模块定义和程序结束伪操作1 . NAME 和 TITLE 伪操作格式 NAME 模块名格式 TITLE 模块名在源程序开始可用 NAME 或 TITLE 为模块命名,模块名的作用是指示给连接程序进行连接用。源程序中可无模块定义,此时源文件名作为模块名。,24,2. END伪操作格式 END 启动地址作用是指示源程序到此结束。

9、汇编程序对 END 之后的语句不进行处理。 程序中所有有效语句应放在 END 语句之前。源程序中必须有 END 结束语句。汇编程序对无 END 语句的源程序不进行处理,只给出无 END 语句错误信息。,25,假设 TEST.asm 是一个无 END 语句的汇编语言源程序。 其汇编结果如下:,D: MASM TEST; Microsoft (R) Macro Assembler Version 5.10 Copyright (C) Microsoft Corp 1981, 1988. All rights reserved.End of file encountered on input fil

10、e End of file encountered on input file49968 + 421181 Bytes symbol space free0 Warning Errors0 Severe Errors D:,由于没有END语句,汇编程序根本没对源程序进行汇编, 此时显示警告性错误总数为 0,严重性错误总数为 0, 用户不要被此值的误导。,26,启动地址可是一个标号或过程名, 指示程序的入口。 程序装入内存后,系统跳转到入口处, 开始执行程序。,27,二、段定义伪操作格式 段名 SEGMENT、段名 ENDS段定义由伪操作SEGMENT开始、ENDS结束。 其中: SEGMENT

11、 和ENDS 必须成对出现,且语句前必须有段名,段名必须相同。SEGMENT和ENDS语句之间可以有指令和其他伪操作,表示存放在该段内存的变量、指令或其他伪操作对该段内存的处理程序中可以定义多个段。程序经汇编、连接及装入内存后,段名为一具体的段值。,28,29,三、变量定义伪操作格式 变量名 类型助记符 操作数 ,操作数 , . 用来定义程序中所用的内存操作数。其中 变量名指示内存操作数的地址(符号地址)类型助记符指示内存操作数的类型(字节、字、双字等)操作数指示内存操作数的内容汇编程序将定义的操作数,按其类型分配内存单元数,顺序存入变量名指向的内存单元中。常用的类型助记符有: DB 指示其后

12、的操作数为字节类型 DW 指示其后的操作数为字类型 DD 指示其后的操作数为双字类型,30,例1: 定义赋初值的变量data SEGMENTxx DB 1, -1, 0fcHyy DW 1, -1, 0fcHzz DD 1,- 1, 0fcHdata ENDS,31,例2: 定义字符串变量( 只能用DB定义 )data SEGMENTstr1 DB TsingHua str2 DB INPUT: , 0dH , 0aH ,$data ENDS,32,操作数可以是用常量、表达式和 ? 表示。常量和表达式表示内存操作数的初始值,其值应在其定义的类型范围内,否则汇编出错。 例 aa DB 270bb

13、 DW 80000用 ? 表示不置初始值的内存操作数。例 cc DB ?可用 DUP 复制操作符定义相同的操作数,其格式为重复次数 DUP( 操作数)例 ee DB 3 DUP ( 4 ) 等价于 ee DB 4, 4, 4,33,data SEGMENT xx DB 1, -1, 0FCH yy DW 1,- 1, 0FCH zz DD 1, -1, 0FCH str DB TsingHua buf DB 4, ?,4 DUP (?)DB dataend data ENDS code SEGMENTASSUME CS:codeASSUME DS:data start: MOV AX , da

14、taMOV DS , AXLEA BX , xxLEA SI , yyLEA DI , zz MOV AH , 4CHINT 21H code ENDSEND start,例4: 在DEBUG下查看变量存放情况。,34,四、ASSUME伪操作格式 ASSUME 段寄存器:段名 , 段寄存器:段名, 其中 段寄存器为CS、DS、ES、SS中的一个段名为用伪操作SEGMENT定义过的段名例 ASSUME CS: cc , DS:aaASSUME 伪操作的作用指示汇编程序指令中用到的标号、过程及变量所在的段。其中 对标号、过程必须用 CS 段寄存器指示对变量可用 CS、DS、ES、SS 段寄存器指示,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号