收藏 分享(赏)

计算机硬件基础第5章.ppt

上传人:gnk289057 文档编号:10249288 上传时间:2019-10-25 格式:PPT 页数:32 大小:136KB
下载 相关 举报
计算机硬件基础第5章.ppt_第1页
第1页 / 共32页
计算机硬件基础第5章.ppt_第2页
第2页 / 共32页
计算机硬件基础第5章.ppt_第3页
第3页 / 共32页
计算机硬件基础第5章.ppt_第4页
第4页 / 共32页
计算机硬件基础第5章.ppt_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、第5章 汇编语言与程序设计,2,主要内容,汇编语言、汇编程序的基本概念汇编语言程序设计过程汇编语言源程序的结构框架常用伪指令简单程序设计,3,5.1 汇编语言基础,程序设计语言包括:,面向机器的语言,机器语言 汇编语言 高级语言,汇编语言: 用助记符表示指令汇编语言源程序:用汇编语言编写的程序汇编程序: 编译汇编语言源程序的程序,4,5.1.1 设计汇编语言程序的步骤,1.编写源程序(文件名.ASM),2.编译成目标文件(文件名.OBJ),3.生成可执行文件 (文件名.EXE),4.调试、运行程序,用编辑软件(如EDIT.EXE等),用汇编程序(如TASM.EXE等),用链接程序(如TLINK

2、.EXE等),用调试程序(如TD.EXE等) 也可直接运行可执行文件,有集成软件,通过菜单调用相应程序,5,5.1.2 汇编语言源程序结构,段名1 SEGMENT ;定义段1 ;一系列语句 段名1 ENDS ;段1结束 段名n SEGMENT ;定义段n 段名n ENDS ;段n结束 END ;整个程序结束,由若干段组成,6,5.1.2 汇编语言源程序结构,DATA SEGMENT ;定义数据段 MEM1 DB 11H, 22H DATA ENDS CODE SEGMENT ;定义代码段ASSUME CS: CODE, DS: DATA START: MOV AX, DATA CODE END

3、SEND START ;程序结束,由数据段、代码段组成,7,5.1.3 汇编语言语句格式,指令性语句 :CPU执行的指令指示性语句 :CPU不执行的指令,编译时执行,下面分别介绍,8,指令性语句,由CPU执行的指令,编译后生成目标代码,放在目标文件中 要求的操作在执行程序时完成 例 MIUS: ADD AX, BX ;加法指令INC BX ;BX加10 语句格式:标号: 前缀 助记符 操作数, 操作数 ;注释,指令的符号地址,操作码,注释前加分号,编译 汇编,源程序(文件名.ASM),目标文件(文件名.OBJ),9,指示性语句(伪指令),是CPU不执行的指令,编译后不生成目标代码 用于分配内存

4、空间、定义变量、指示程序开始和结束等,编译汇编,源程序(EX1.ASM),目标文件(EX1.OBJ),设程序有伪指令 DATA DB 12 把数据12放到内存数据段地址DATA中,没有伪指令代码 相应操作已在编译时完成,10,伪指令格式,名字 伪指令助记符 操作数 , 操作数, ;注释,变量的符号地址,伪指令举例:DATA DB 12 ;把数据12放到内存的数据段中Y EQU 100 ;用符号(变量)Y代替数据100,11,指示性语句中的操作数,可以是:寄存器、存储器单元常量:数值或字符、字符串变量:代表内存的数据区,程序视为存储器操作数表达式:可包括各种运算符,12,5.2 常用伪指令(指示

5、性指令),数据定义伪指令符号定义伪指令段定义伪指令设定段寄存器伪指令结束伪指令过程定义伪指令宏命令伪指令,下面分别介绍,13,数据定义伪指令,用途:定义数据区中变量的类型格式:变量名 伪指令助记符 操作数, ;注释例 ONE DB 25 ;定义一个字节,存入25 例 TWO DB ? ;定义一个字节,数据未知 例 THREE DB 3, 6 ;定义连续2字节,ONE,25,TWO,3,6,THREE,14,数据定义伪指令助记符,ONE,34H,00H,TWO,12H,DB:定义的变量为字节型DW:字类型(2字节)DD:双字型(4字节)DQ:4字型(8字节) DT:10字节型 例 ONE DW

6、1234H ;定义一个字并存入数据 TWO DW 56H ;定义一个字并存入数据 DATA1 DW ? ;定义一个字 DATA2 DD ? ;定义双字,56H,DATA1,DATA2,内存低端,内存高端,要求掌握,15,定义字符串,定义字符串必须用DB伪指令 例 DATA1 DB ABCD 例 DATA1 DB 41H, 42H, 43H, 44H 例 DATA1 DB ABC, 44H,B,C,D,A,3种等价写法,DATA1,16,N1,定义存储字符的输入缓冲区(不要求),格式:符号地址 DB N1, ? , N1 DUP (?) 例 DAT1 DB 20, ?, 20 DUP (?) 状

7、态见图,0DH,N2,整个缓冲区,最多键入字符数,实际键入字符数,结束符,20,?,?,缓冲区初态,DAT1,17,重复操作符,用于:为一个数据区的各单元设置相同的初值格式:变量名 伪指令助记符 n DUP (值, ) 例 DATA DB 0, 0, 0, 0 等价DATA DB 4 DUP (0) 例 DB 22H, 11H, 22H, 11H 等价DB 2 DUP (22H,11H),18,符号定义伪指令,格式:符号名 EQU 表达式操作:用符号名代替后边的表达式,不可重新定义说明:EQU说明的表达式不占用内存空间 例 CONSTANT EQU 100 VAR EQU 30H+99H,19

8、,段定义伪指令,说明逻辑段的起始和结束说明不同程序模块中同类逻辑段之间的联系形态 段名 SEGMENT 定位类型 组合类型 类别 段名 ENDS 例 定义数据段DATA SEGMENT MEM1 DB 11H, 22HMEM2 DW 1234HDATA ENDS,说明逻辑段的起点,段的类别,与其他段的关系,20,指定段寄存器伪指令,功能:用于说明指向逻辑段的寄存器格式:ASSUME 段寄存器名: 段名 , 段寄存器名: 段名, 例 DATA SEGMENT ;定义数据段DATA ENDSCODE SEGMENT ;定义代码段ASSUME CS: CODE, DS: DATA ;指定段寄存器 C

9、ODE ENDS,21,结束伪指令,功能:表示源程序结束格式:END 标号 例 CODE SEGMENTASSUME CS: CODESTART: MOV AX, 12HCODE ENDSEND START ;表示源程序结束,22,5.3 汇编语言程序设计,5.3.1 顺序结构程序 5.3.2 分支结构程序 5.3.3 循环结构程序 5.3.4 子程序,23,5.3.1 顺序结构程序 (举例1),例5.4 下面程序把输入的小写字母变成大写字母,并输出。 大写字母ASCII码小写字母ASCII码32CODE SEGMENTASSUME CS: CODE START: MOV AH, 1 ;键盘输

10、入字符 INT 21H ;输入的字符存入AL中SUB AL, 32 ;小写字母转成大写字母MOV DL, AL ;显示的字符要事先存入DL中MOV AH, 2 ;显示字符INT 21H MOV AH, 76 ;退出程序,返回操作系统 INT 21H CODE ENDSEND START,24,顺序结构程序 (举例2),DATA SEGMENT NUM1 DW 250H NUM2 DW 1A9H RESULT DW ? DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX ;数据段地址送DS

11、MOV AX, NUM1SUB AX, NUM2 ;两数相减,即AX=NUM1-NUM2MOV RESULT, AX ;存放结果MOV AH, 4CHINT 21H ;返回 CODE ENDSEND START,求两数之差 即NUM1-NUM2 结果放RESULT中,NUM1,50,NUM2,RESULT,A9,25,5.3.2 分支结构程序(举例1),例5.6 下面程序段从键盘输入1个09的数字,该数乘以2,乘积存入DX中MOV DX, 0MOV AH, 1INT 21H ;键盘输入,输入的字符存入AL中 CMP AL, 39H ;检查输入的字符是否为数字,即要求39HAL30HJA STO

12、P ;若AL9,即AL39H,则跳到STOP处,结束程序CMP AL, 30H JA STOP ;若AL0,即AL30H,则跳到STOP处,结束程序AND AL, 0FH ;将数字的ASCII码转变成二进制编码,并放在AL中MOV BL, 2 MUL BL ;ALBL,乘积放AX中MUL DX, AX ;乘积存入DX中 STOP: ,26,分支结构程序 (举例2),2X+4 X23X-5 X2,X,5,?,Y,例5.7 实现分段函数Y=,MOV BX, 3 ;计算X2 MUL BXSUB AX, 5 ;计算3X-5JMP A2 ;转到A2 A1: MOV BX, 2 ;计算X2MUL BXAD

13、D AX, 4 ;计算2X+4 A2: MOV Y, AX ;保存Y值MOV AH, 4CH ;返回 INT 21H CODE ENDSEND START,DATA SEGMENT X DW 5 Y DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV AX, X CMP AX, 2 ;比较AX和2 JL A1 ;AX小于2转到A1,27,5.3.3 循环结构程序 (举例1),例5.8 编写程序,计算1210,结果送AX寄存器 CODE SEGMENT ASSUME CS:C

14、ODE START: MOV AX, 0 ;AX清0,用于存储1210之值MOV BX, 1 ;加数初始化(第1个加数1BX)MOV CX, 10 ;循环次数10CX SUM: ADD AX, BX ;累加(AXBXAX)INC BX ;构造下一个加数:BX加1LOOP SUM ;CX减1,若CX0,则转到SUM处继续加MOV AH, 4CH INT 21H CODE ENDSEND START,28,5.3.4 子程序,子程序(过程)定义格式: 子程序名 PROC NEAR/FAR RET子程序名 ENDP调用子程序指令:CALL 子程序名子程序返回指令:RET,29,子程序举例,例5.14

15、 编写实现延时(耗时)功能的子程序(近过程),名称为DELAY DELAY PROC NEAR ;定义名为DELAY的近过程,用于实现延时功能PUSH CX ;保护CX PUSH AX ;保护AX D1: MOV CX, 0FFFFH D2: MOV AX, 0FFFFHDEC AXJNZ D2LOOP D1POP AX ;恢复AX POP CX ;恢复CX RET ;返回到调用处 DELAY ENDP ;DELAY子程序结束处,30,子程序举例,例5.14 编写程序,每隔一定时间在屏幕显示字符A,当有键按下,即结束程序。要求调用子程序DELAY实现延时(每隔一定时间)。 CODE SEGME

16、NT ASSUME CS:CODE START: MOV DL, A SHOW: MOV AH, 2 INT 21H ;屏幕显示字符A COUNT: MOV AH, 1 ;检查是否有键按下INT 16HJNE EXIT ;有则退出CALL DELAY ;调用下面的延时子程序DELAYJMP SHOW ;跳到SHOW处,继续显示字符A EXIT: MOV AH, 4CH ;退出程序INT 21H,DELAY PROC NEAR DELAY ENDP CODE ENDS END START,31,本章要求掌握的主要内容,汇编语言程序设计的一般过程汇编语言源程序的结构框架 什么是指令性语句和指示性语句基本伪指令能够阅读和编写简单的汇编语言源程序,32,简答题(更多习题见教材),1.要运行一个用汇编语言编写的程序需经过几个步骤,每步使用什么程序,得到什么文件? 2.一个汇编语言源程序通常由哪些逻辑段组成? 3.什么是汇编语言伪指令,写出一条伪指令。 4.什么是CPU执行指令,写出一条执行指令。 5.编写程序,在屏幕上显示26个大写字母,要求用33号中断程序的2号子功能,即每次输出一个字母,共循环26次。完,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报