版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第第4 4章章 汇编语言程序设计汇编语言程序设计mov ax,12hcall displayJmp 1234h2主要内容:n汇编语言源程序的结构n汇编语言语句格式n伪指令n功能调用n汇编语言程序设计331. 汇编语言语句类型指令性语句指示性语句CPU执行的语句,执行的语句,能够生成目标代码能够生成目标代码CPU不执行,而由汇不执行,而由汇编程序执行的语句,编程序执行的语句,不生成目标代码不生成目标代码442. 汇编语言语句格式 指令性语句: 标号: 前缀 助记符 操作数,操作数 ;注释指令的符号地址指令的符号地址标号后要有冒号标号后要有冒号操作码操作码注释前加分号注释前加分号55指示性语句格
2、式名字 伪指令助记符 操作数 ,操作数, ;注释变量的符号地址变量的符号地址其后不加冒号其后不加冒号指示性语句中至指示性语句中至少有一个操作数少有一个操作数66常用伪指令数据定义伪指令符号定义伪指令段定义伪指令结束伪指令过程定义伪指令宏命令伪指令77一、数据定义伪指令n用于定义数据区中变量的类型及大小n格式: 变量名 伪指令助记符 操作数, ;注释符号地址符号地址定义变量类型定义变量类型定义变量值定义变量值及区域大小及区域大小881. 数据定义伪指令助记符nDB 定义的变量为字节型nDW 定义的变量为字类型(双字节)nDD 定义的变量为双字型(4字节)nDQ 定义的变量为4字型(8字节)nDT
3、 定义的变量为10字节型992. 重复操作符n作用:q为一个数据区的各单元设置相同的初值n目的:q常用于声明一个数据区n格式: 变量名 伪指令助记符 n DUP(初值,)n例: BW 20 DUP(0)M1 DB 10 DUP(0)10103. “?”的作用n表示随机值,用于预留存储空间nMEM1 DB 34H,A,? DW 20 DUP(?)预留预留40个字节单元,每单元为随机值个字节单元,每单元为随机值随机数随机数占占1个字节单元个字节单元114.2.2 符号定义伪指令 把一个表达式用一个符号表示,以后凡出现该表达式的地方都可用这个符号表示。类似于C语言中的#define。 符号定义伪指令
4、有两种:EQU,=用EQUEQU定义的符号未清除前,不能重新定义。清除EQU定义可用PURGEPURGE伪指令。用”=”定义的符号可在任何时候进行重定义。二者二者均不占用存储空间,仅是给符号赋值 1212三、段定义伪指令n说明逻辑段的起始和结束;n说明不同程序模块中同类逻辑段之间的联系形 态1313段定义伪指令格式段名 SEGMENT 定位类型 组合类型 类别 段名 ENDS说明逻辑说明逻辑段的起点段的起点说明不同模块中同名说明不同模块中同名段的组和连接方式段的组和连接方式1414定位类型nPARA: 段的起点从节边界开始 (16个字节为1节)nBYTE: 段的起点从存储器任何地址开始nWOR
5、D:段的起点从偶地址开始nPAGE: 段的起点从页边界开始 (256个字节为1页)1515组合类型n与其它模块中的同名段在满足定位类型的前提 下具有的组合方式:qNONE: 不组合qPUBLIC: 依次连接(顺序由LINK程序确定)qCOMMON: 覆盖连接qSTACK: 堆栈段的依次连接qAT 表达式:段定义在表达式值为段基的节边界qMEMORY: 相应段在同名段的最高地址处。164.2.3 段定义伪指令汇编语言程序是按段来组织程序和数据的。 和存储器的物理段相对应,汇编语言程序中的段称为逻辑段。汇编连接后被映射到物理段中。3/4类段:代码(程序)、数据/附加数据、堆栈段定义伪指令:SEGM
6、ENTSEGMENT、ENDSENDS、ASSUMEASSUME、ORGORG定义一个段的基本格式:段的基本格式: 段名段名 SEGMENT 定位类型定位类型组合方式组合方式类别类别 段名段名 ENDS17这两个伪指令总是成对出现,二者前面的段名应一致。SEGMENT说明了一个段的开始,ENDS说明了一个段的结束。 对数据段和堆栈段,段中的语句一般是变量定义。 对代码段则是指令语句。如: data SEGMENT data ENDS 和1818四、设定段寄存器伪指令n说明所定义逻辑段的性质n格式: ASSUME 段寄存器名:段名,段寄存器名:段名,19ASSUME伪指令伪指令在代码段中,还必须
7、明确段和段寄存器的关系,这由ASSUME语句来指定。如 ASSUME ASSUME CS:code,DS:data,ES:data,SS:stackCS:code,DS:data,ES:data,SS:stack 语句中的code和data为段名。 这个语句说明: (1) CS将指向名字为code的代码段 (2) DS和ES将指向名字为data的数据段2020五、结束伪指令n表示源程序结束n格式: END 标号2121汇编语言源程序结构数据段名 SEGMENT 数据段名 ENDS附加段名 SEGMENT 附加段名 ENDS堆栈段名堆栈段名 SEGMENT 堆栈段名堆栈段名 ENDS代码段名代码
8、段名 SEGMENT 代码段名代码段名 ENDS END 2222六、过程定义伪指令n用于定义一个过程体n格式: 过程名 PROC NEAR / FAR RET 过程名 ENDPP157例例过程入口的过程入口的符号地址符号地址2323七、宏命令伪指令n 源程序中由汇编程序识别的具有独立功能的一段程序代码n格式: 宏命令名 MACRO ENDM宏体宏体宏宏2424其它伪指令nNAME-为目标程序设定一个名字n格式: NAME 模块名nTITLE-为程序清单指定打印标题n格式: TITLE 标题名254.3 功能调用功能调用DOS 功能调用 高级调用,操作系统提供BIOS功能调用 低级调用263.
9、 调用方法调用方法设置入口参数设置入口参数在在AH设置功能号设置功能号m执行中断指令执行中断指令INT N分析、应用出口参数分析、应用出口参数27例例1 单字符显示功能调用单字符显示功能调用MOV DL, A ;设置入口参数设置入口参数MOV AH, 02H ;设置功能号设置功能号 INT 21H ;执行中断调用执行中断调用 例例2 单字符输入功能调用单字符输入功能调用MOV AH, 01H ;设置功能号设置功能号 INT 21H ;执行中断调用执行中断调用CMP AL, 0DH ;分析、应用出口参数分析、应用出口参数JZ exit、28二、二、BIOS功能调用功能调用l 基本输入基本输入/输
10、出模块输出模块BIOS:实现对输入实现对输入/输出设备的控制,输出设备的控制,内含内含0 1CH 等类型中断子程,等类型中断子程,包括显示器、磁盘、键盘、打印机等标准外设的驱动程序。包括显示器、磁盘、键盘、打印机等标准外设的驱动程序。 (参看中断类型分配表)(参看中断类型分配表) l BIOS功能调用指对功能调用指对BIOS模块中的中断子程的调用。模块中的中断子程的调用。29l 有关显示器有关显示器 显示器通过显卡显示器通过显卡(显示适配器显示适配器)连接到计算机上。连接到计算机上。 单色显示器只能显示黑白两色。单色显示器只能显示黑白两色。 彩色显示器能显示多种颜色。彩色显示器能显示多种颜色。
11、301设置显示方式设置显示方式入口参数入口参数 AL = 显示方式值显示方式值 00 4025 黑白文本方式黑白文本方式 01 4025 彩色文本方式彩色文本方式 02 8025 黑白文本方式黑白文本方式 03 8025 彩色文本方式彩色文本方式 04 320320 彩色图形方式彩色图形方式 功能号功能号 AH = 00H类型号类型号 10H出口参数出口参数 无无 实现功能实现功能 将显示方式设置为指定形式将显示方式设置为指定形式例例 将显示方式设置为将显示方式设置为 8025 彩色文本方式彩色文本方式 MOV AL, 03H MOV AH, 00 INT 10H312. 清屏、清窗口功能清屏
12、、清窗口功能入口参数入口参数 AL = 0 CH = 窗口左上角行号窗口左上角行号 CL =窗口左上角列号窗口左上角列号 DH = 窗口右下角行号窗口右下角行号 DL =窗口右下角列号窗口右下角列号 BH = 窗口属性窗口属性功能号功能号 AH = 06H 或或 AH = 07H类型号类型号 10H出口参数出口参数 无无 实现功能实现功能 按给定属性清除指定的窗口内容按给定属性清除指定的窗口内容32例例 清除屏幕显示,将其属性置为反白(白底黑字)显示。清除屏幕显示,将其属性置为反白(白底黑字)显示。MOV AL, 0 ;清屏功能清屏功能 MOV BH, 70H ;白底黑字白底黑字 MOV CH
13、, 0 ;左上角左上角 行号行号MOV CL, 0 ;左上角左上角 列号列号 MOV DH, 24 ;右下角右下角 行号行号 MOV DL, 79 ;右下角右下角 列号列号 MOV AH, 6 ;功能号功能号 INT 10H ;中断调用中断调用333. 置光标位置置光标位置l 光标控制开始显示的位置,光标控制开始显示的位置, 计算机有专门的硬件控制光标的显示大小、位置。计算机有专门的硬件控制光标的显示大小、位置。l 光标只在文本方式中出现,在图形方式下光标消失。光标只在文本方式中出现,在图形方式下光标消失。 0列列0 行行79列列24 行行5列列1列列1 行行2 行行34置光标位置置光标位置
14、入口参数入口参数 DH = 行号行号 DL = 列号列号 BH = 页号页号 功能号功能号 AH= 02H 类型号类型号 10H 出口参数出口参数 无无 实现功能实现功能 将光标设置在指定的位置将光标设置在指定的位置35例例 将光标设置在将光标设置在2行行5列列的位置的位置MOV DH, 2MOV DL, 5MOV BH, 0MOV AH, 2INT 10H 0列列0 行行79列列24行行5列列1列列1 行行2 行行36DOS 功能调用功能调用n包含多个子功能的功能包,用软中断指令调用,中断类型码固定为21Hn各子功能采用功能号来区分附录附录C37DOS 功能调用功能调用设备管理38三、三、D
15、OS系统功能调用系统功能调用 (21H类型中断调用类型中断调用)1显示单字符显示单字符 ( 02H功能功能 )2显示字符串显示字符串 ( 09H功能功能 )3单字符输入单字符输入 ( 01H、07H、08H功能功能 )4字符串输入字符串输入 ( 0AH功能功能 )5检测键盘状态检测键盘状态 ( 0BH功能功能 )6保存中断向量保存中断向量 ( 35H功能功能 ) (第六章介绍第六章介绍)7设置中断向量设置中断向量 ( 25H功能功能 )39DOS 功能调用功能调用n调用格式: MOV AH,功能号 INT 21H401.从键盘输入单字符并显示从键盘输入单字符并显示n调用方法: MOV AH,0
16、1 INT 21Hn输入的字符在AL中41单字符输入例单字符输入例GET_KEY: MOV AH,1 INT 21H CMP AL,Y JZ YES CMP AL,N JZ NO JNZ GET_KEY YES: NO: 交互式应交互式应 答程序答程序422. 从键盘输入字符串从键盘输入字符串nAH 功能号OAHnDS:DX 字符串在内存中的存放地址nINT 21H43定义字符缓冲区定义字符缓冲区n用户自定义缓冲区格式:0DHN1N2整个缓冲区整个缓冲区最大键入字符数最大键入字符数实际键入字符数实际键入字符数44输入字符串程序段输入字符串程序段n DAT1 DB 20,?,20 DUP(?)n
17、 LEA DX,DAT1 MOV AH,0AH INT 21H在数据段在数据段中定义中定义45输入缓冲区输入缓冲区14H ?20个字节个字节定义后的输入缓定义后的输入缓冲区初始状态:冲区初始状态:463. 单字符显示输出单字符显示输出nAH 功能号O2HnDL 待输出字符nINT 21H47单字符显示输出例单字符显示输出例n MOVAH,02n MOVDL,41Hn INT21H执行结果:执行结果:屏幕显示屏幕显示A484. 字符串输出显示字符串输出显示nAH 功能号O9HnDS:DX 待输出字符串的偏移地址nINT 21H49字符串输出显示字符串输出显示n被显示的字符串必须以$结束,且所显示
18、的内容不应出现非可见的ASCII码50字符串输出显示例字符串输出显示例DATA SEGMENTMESS1 DB Input String: 0DH,0AH,$DATA ENDSCODE SEGMENT MOVAH,09MOVDX,OFFSET MESS1INT 21H 51l 有关键盘有关键盘 键盘通过键盘接口电路与计算机连接。键盘通过键盘接口电路与计算机连接。 键盘上的键有三种类型键盘上的键有三种类型: 字符键字符键 AZ, 09等等 功能键功能键 F1F12, Page Up等等 组合控制键组合控制键 Shift, Ctrl, Alt等等 键盘上的每个键都有一个键盘上的每个键都有一个扫描码
19、扫描码。 据扫描码可确定操作的是哪个键、是按下键还是释放键;据扫描码可确定操作的是哪个键、是按下键还是释放键; 扫描码用一个字节表示。扫描码用一个字节表示。低低7位是扫描码的数字编码位是扫描码的数字编码, 与键盘上的键一一对应;与键盘上的键一一对应;最高位最高位D7位表示键的操作状态:位表示键的操作状态:当当按下键时按下键时, D7=0 ; 当当释放键时释放键时, D7=152 键盘中断子程功能(键盘中断子程功能(09H类型中断子程)类型中断子程) 从键盘接口读取操作键的扫描码从键盘接口读取操作键的扫描码; 将扫描码转换成字符码;将扫描码转换成字符码; 大部分键的字符码为大部分键的字符码为AS
20、CII码,码, 无无ASCII码键(如组合键码键(如组合键Shift、Ctrl等)的字符码为等)的字符码为0。 将键的扫描码、字符码存放在键盘缓冲区将键的扫描码、字符码存放在键盘缓冲区, 供其它有关键盘的中断子程应用。供其它有关键盘的中断子程应用。 键盘接口对按下键和释放键均向计算机发出中断申请键盘接口对按下键和释放键均向计算机发出中断申请, 如果如果中断响应条件满足中断响应条件满足, CPU转去执行键盘中断子程。转去执行键盘中断子程。 键盘中断子程类型号为键盘中断子程类型号为09H。533. 单字符输入单字符输入 ( 01H、07H、08H功能功能) 入口参数入口参数 无无 功能号功能号 A
21、H = 01H 类型号类型号 21H 出口参数出口参数 AL = 键入字符的键入字符的ASCII码码 实现功能实现功能 等待从键盘输入一个字符等待从键盘输入一个字符, 并在屏幕上回显,光标移动并在屏幕上回显,光标移动, 检测检测Ctrl-Break键键54例例 利用键盘输入的字符产生分支:利用键盘输入的字符产生分支: MOV AH, 1 ;等待从键盘输入等待从键盘输入 INT 21H CMP AL, Y ;是是Y? JZ yes CMP AL, y ;是是y? JZ yes no: . . . . . . JMP exit yes: . . . . . . exit: . . . 551. 显
22、示单字符显示单字符 ( 02H功能功能 ) 入口参数入口参数 DL = 要显示字符的要显示字符的ASCII 码码 功能号功能号 AH=02H类型号类型号 INT 21H出口参数出口参数 无无实现功能实现功能 显示指定字符显示指定字符,光标随动。光标随动。例例 显示字符显示字符A MOV DL, A MOV AH, 02H INT 21H56例例 使光标回到下一行的行首。使光标回到下一行的行首。MOV DL , 0DH ;显示回车符显示回车符MOV AH , 02HINT 21HMOV DL , 0AH ;显示换行符显示换行符MOV AH , 02HINT 21H H e l l o W o r
23、 l d 572. 显示字符串显示字符串 ( 09H功能功能 )入口参数入口参数 定义要显示的字符串,定义要显示的字符串, 字符串尾应为字符串尾应为$,作为结束显示的标志。,作为结束显示的标志。 DS : DX = 字符串的首地址字符串的首地址功能号功能号 AH = 09 H类型号类型号 21H出口参数出口参数 无无实现功能实现功能 显示字符串,遇显示字符串,遇 $ 停止显示,光标随动停止显示,光标随动。58例例 用不带回显功能输入密码时:用不带回显功能输入密码时: input: MOV AH, 07H ;等待从键盘输入等待从键盘输入 INT 21H MOV DI, AL ;存入缓冲区存入缓冲
24、区 CMP AL, 0DH ;是回车符?是回车符? JNZ input ;不是,继续输入不是,继续输入 check: 、 、 594. 字符串输入字符串输入 ( 0AH 功能功能 ) 入口参数入口参数 DS : DX = 缓冲区的首地址缓冲区的首地址 ( DS :DX ) = 限制最多输入的字符数限制最多输入的字符数 功能号功能号 AH = 0AH 类型号类型号 21H 出口参数出口参数 ( DS : DX+1 ) = 实际键入的字符实际键入的字符(不含回车符不含回车符) 从从( DS : DX+2 )开始顺序存放键入的字符串,开始顺序存放键入的字符串, 回车符回车符0DH为串尾最后一字符。为
25、串尾最后一字符。 实现功能实现功能 等待从键盘输入字符串,并存入设定的缓冲区内,等待从键盘输入字符串,并存入设定的缓冲区内, 同时回显字符串,光标随着移动,同时回显字符串,光标随着移动, 回车符使光标回到行首。回车符使光标回到行首。 注意事项:注意事项:应按要求先定义缓冲区,再调用。应按要求先定义缓冲区,再调用。600AH功能注意事项功能注意事项: 输入的字符均带回显,且光标随字符移动。输入的字符均带回显,且光标随字符移动。 当输入回车符结束时,也回显回车符。当输入回车符结束时,也回显回车符。表现为功能调用结束后,光标回到了行首。表现为功能调用结束后,光标回到了行首。 回车符回车符0DH作为一
26、个输入的字符存放在字符串尾,作为一个输入的字符存放在字符串尾, 但计数输入个数时,不包括回车键。但计数输入个数时,不包括回车键。 实际最多能输入的字符数实际最多能输入的字符数 = 限制的最多数限制的最多数- -1 (回车符占一个)(回车符占一个) 执行完执行完0AH功能后,功能后,DS和和DX的值不变,的值不变, DS:DX仍指向缓冲区的首地址。仍指向缓冲区的首地址。 整个缓冲区的大小应为整个缓冲区的大小应为:限制的最多数限制的最多数 +2 max DB 11, ? , 11 dup (?)61例例 编程从键盘输入字符串,给出显示提示编程从键盘输入字符串,给出显示提示Please input:data SEGMENT stri DB Please Input :,$max DB 11, ?, 11 DUP(?)data ENDScode SEGMENT ASSUME CS:code, DS:datastart: MOV AX, data ;置缓冲区地址于置缓冲区地址于DS:DX MOV DS, AX LEA DX, stri MOV AH, 09H ;显示提示显示提示 INT 21H LEA DX, max ;等待从键盘输入等待从键盘输入 MOV AH, 0AH INT 21H MOV AH, 4CH INT 21H code ENDS END start利用利
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年水利大数据挖掘平台架构设计
- 行政处罚法和治安管理处罚法题库(含答案)
- 金属工艺学习题解答
- 芯片级维修测试题及答案
- 边缘计算主控芯片生产线功耗优化(降低15%)项目可行性研究报告
- 小学教育心理学试题及答案
- 年产230套模块化温室大棚生产项目可行性研究报告
- 2026 年商超人员密集场所安全课件
- 老年病专科医院建设项目可行性研究报告
- 2026年幼儿教师资格证保教知识题库附带解析答案
- 企业增值税管理制度
- 2026年天津高考数学试卷试题真题及答案详解(精校打印)
- 高炉炉前组长安全制度培训
- 安全生产述职述安制度
- (2025)泌尿系结石药物溶石临床应用中国专家共识课件
- 公司新供应商评审表模板
- 认知障碍课件
- 儿童青少年体能训练课程指南
- 牛保才事迹课件
- 【全科医学概论5版】第04章 以家庭为单位的健康照顾
- 2025年小众香水细分市场发展报告
评论
0/150
提交评论