汇编语言硬件知识

上传人:san****019 文档编号:68092533 上传时间:2019-01-09 格式:PPT 页数:57 大小:335.31KB
返回 下载 相关 举报
汇编语言硬件知识_第1页
第1页 / 共57页
汇编语言硬件知识_第2页
第2页 / 共57页
汇编语言硬件知识_第3页
第3页 / 共57页
汇编语言硬件知识_第4页
第4页 / 共57页
汇编语言硬件知识_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《汇编语言硬件知识》由会员分享,可在线阅读,更多相关《汇编语言硬件知识(57页珍藏版)》请在金锄头文库上搜索。

1、第2部分 汇编语言基础知识,Assembly Language Programming,1 汇编语言的编码要求,Assembly Language Programming,基本特征,程序注释 保留字 标识符 语句 伪操作 汇编程序的基本框架 数据类型 简单的程序举例,注释,注释利用 ; 开始 可自成一行,也可在指令之后的同一行里 例如 ADD AX,BX ; 计算总量,保留字,在特殊情况下使用,具有固定用途而保留的某些名字,称为保留字。主要类型: 指令 如MOV, ADD等计算机可执行的操作 伪操作 如END, SEGMENT,为编译程序提供信息的语句 操作符 如FAR, SIZE,在表达式中

2、使用 预定义符号 如data, model等,在编译期间向程序返回信息,标识符1,用户定义的符号名称,包括两类: 数据项的名称:表示数据项的地址 如COUNTER DB 0 标号:表示指令、过程或者段的地址 MAIN PROC FAR B30: ADD BL, 25,标识符2,定义规则 第一个字符必须是字母或者不为.的特殊字符 长度限定在131之间 不能和保留字相冲突 不区分大小写 例如 合法: TATAL, QTY25, $P80 非法: 5P, .TY,字母: AZ和az 数字:09 特殊: ? _ . $,语句,语句包括两类: 指令具有对应的机器码 例如:ADD, MOV 伪指令只在程序

3、汇编过程起作用,产生机器不可执行的代码 例如: 定义数据项DB, DW,指令,指令机器指令 操作operation是必有的,规定该指令的动作 操作数operand是可选的,并且数量不定 例如: 标识符 操作 操作数 伪指令:COUNT DB 1 指令: MOV AX, 0,标示名称 操作 操作数1n ;注释,伪操作,介绍几个常用的伪操作 PAGE和TITLE SEGMENT PROC END和ENDP ASSUME,标示名称 伪操作 操作数1n ;注释,PAGE和TITLE,程序的开头,PAGE定义程序打印时一页的最大行数和每行最大字符数。 默认50,80 格式:PAGE 60, 132 TI

4、TLE为程序产生标题,打印程序时位于第2行 格式:TITLE Assembly program sort,SEGMENT,格式: segment_name SEGMENT align combine class segment_name ENDS 解释 定位align:指明段开始的边界。 通常段为小边界,参数为PARA。 组合combine:指明程序连接时,该段是否和其它的段组合在一起(以后解释),参数为STACK, COMMON, PUBLIC 堆栈段通常定义 segment_name SEGMENT PARA STACK 类别class:指明段的类别 代码段code,数据段data,堆栈段

5、stack,PROC,定义过程,格式: proc_name PROC FAR proc_name ENDP 过程名的操作数为FAR,意味着相应程序的入口点为此过程,在程序中只有一个操作数为FAR的过程。 ENDP指明过程的结束,过程的结束在代码段内,即ENDS之前完成。 代码段内可以包含任意数量的过程,其它的过程通常使用NEAR的操作数。,END,ENDS段结束 ENDP过程结束 END完整的程序结束 格式: END 过程操作数FAR的PROC,ASSUME,指明程序各个段的用途 典型的格式 ASSUME DS:dataseg, CS:codeseg, SS:stackseg, 上述的次序任意

6、 假如需要扩展段ES,也可以加上即可ES:dataseg,程序的框架结构,page 60,132 TITLE A04ASM1 (EXE) Move and add operations STACK SEGMENT PARA STACK Stack . STACK ENDS ; - DATASEG SEGMENT PARA Data DATASEG ENDS ; - CODESEG SEGMENT PARA Code MAIN PROC FAR ASSUME SS:STACK, DS:DATASEG, CS:CODESEG MOV AX,DATASEG ;Set address of data

7、MOV DS,AX ; segment in DS . MOV AX,4C00H ;End processing INT 21H MAIN ENDP ;End of procedure CODESEG ENDS ;End of segment END MAIN ;End of program,解释,段的定义顺序可任意 入口过程MAIN的名称可以为其它,例如START等 程序结束返回 MOV AH, 4CH ;请求结束处理 MOV AL, retcode ;设置返回码 INT 21H ;调用中断处理 通常正常返回0,故可写作 MOV AX, 4C00H INT 21H,编程技巧提示,由于汇编源程

8、序的格式相对不变,故可以把上述的框架保留下来,添加功能代码即可,数据类型 1,名称:对应标识符 伪操作Dn:定义数据的类型长度 字节DB(1字节) 字DW(2字节) 双字DD(4字节) 表达式:定义数据的数值的常数或者表达式,名称 Dn 表达式,数据定义的格式,数据的定义1,表达式的形式 对于尚未初始化的数据,使用 ?表示 常数 举例 最简单的情形 DATAX DB ? DATAY DB 25,数据的定义2,数据序列的定义数组 数据因素依次用 , 隔开 DATAZ DB 21, 22, 23, 24 对DATAZ的数据因素访问,根据数据所处的位置进行 DATAZ+0 表示21, DATAZ+1

9、 表示22,依次类推 MOV AL, DATAZ+3,数据的定义3,重复数据序列的定义 举例 DW 10 DUP(?) DB 5 DUP(12) DB 3 DUP (5 DUP(4) ) DB 4 DUP(3 DUP (0,1), 2 DUP($),名称 Dn 重复个数 DUP(表达式),请大家思考:上述的数据是什么?,数据的定义4,字符和字符串的定义 字符或者字符串在单引号 或者双引号“” 内定义 数据类型常用的是DB 举例 DB Computer city 若串中含有 “”,以下处理 DB Crazy sam”s CD DB “Crazy sams CD”,完整的源程序举例,page 60

10、,132 TITLE A04ASM1 (EXE) Move and add operations STACK SEGMENT PARA STACK Stack DW 32 DUP(0) STACK ENDS ; - DATASEG SEGMENT PARA Data FLDD DW 215 FLDE DW 125 FLDF DW ? DATASEG ENDS ; - CODESEG SEGMENT PARA Code MAIN PROC FAR ASSUME SS:STACK,DS:DATASEG,CS:CODESEG MOV AX,DATASEG ;Set address of data M

11、OV DS,AX ; segment in DS MOV AX,FLDD ;Move 0215 to AX ADD AX,FLDE ;Add 0125 to AX MOV FLDF,AX ;Store sum in FLDF MOV AX,4C00H ;End processing INT 21H MAIN ENDP ;End of procedure CODESEG ENDS ;End of segment END MAIN ;End of program,编写注意,编写建议: 同一小功能段,编写注释 程序识别一般不区分大小写 可读性强,通常所有汇编指令用大写,而注释全部用小写,使用简化的编

12、程框架,.MODEL 自动产生ASSUME语句 .MODEL 通常两种: Tiny: 为.com生成代码 Small: 为.exe生成代码 并且两者代码偏移量限定在64KB内,简化模型举例,page 60,132 TITLE A04ASM2 (EXE) Move and add operations ;- .MODEL SMALL .STACK 64 ;Define stack .DATA ;Define data FLDD DW 215 FLDE DW 125 FLDF DW ? ;- .CODE ;Define code segment MAIN PROC FAR MOV AX,data

13、;Set address of data MOV DS,AX ; segment in DS MOV AX,FLDD ;Move 0215 to AX ADD AX,FLDE ;Add 0125 to AX MOV FLDF,AX ;Store sum in FLDF MOV AX,4C00H ;End processing INT 21H MAIN ENDP ;End of procedure END MAIN ;End of program,2 源程序的编译、连接和执行,Assembly Language Programming,几个文件,源程序:.asm 目标文件:.obj 可执行文件:

14、.exe (.com),编辑源程序.asm,.asm,汇编,.obj,连接,.exe,选项,.LST .CRF,汇编过程1,ML a04asm1.asm Microsoft (R) Segmented Executable Linker Version 5.31.009 Jul 13 1992 Copyright (C) Microsoft Corp 1984-1992. All rights reserved. Object Modules .obj: a04asm1.obj Run File a04asm1.exe: “a04asm1.exe“ List File nul.map: NUL Libraries .lib: Definitions File nul.def:,注意:该命令编译,生成obj, 连接,生成exe同时完成,汇编过程2,E:srcCH04ML /c a04asm1.asm Microsoft (R) Macro Assembler Version 6.11 Copyright (C) Microsoft Corp 1981-1993. All rights reserved. Assembling: a04asm1.asm E:srcCH04LINK a04asm1

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

当前位置:首页 > 高等教育 > 大学课件

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