第4章 汇编语言程序设计4
汇编语言程序设计

汇编语⾔程序设计第4章汇编语⾔程序设计§4.1 汇编语⾔的模式⼀、汇编语⾔源程序的⼀般模式[Name 模块名][Title 标题][定义宏][定义数据段][定义附加段][定义堆栈段]定义代码段源程序结束中括号括起的部分可以省略,可见在⼀个汇编语⾔源程序中必须要定义代码段,并且必须有源程序结束指令。
⼆、8086汇编语⾔程序的⼀个例⼦Pg90。
§4.2 语句⾏的构成汇编语⾔中的语句⼀般分为两种类型:指令性语句和指⽰性语句。
指令性语句的格式为:[标号:] 助记符 [操作数1[,操作数2]] [;注释]指⽰性语句的格式为:[名称] 助记符 [参数1,参数2,……] [;注释]标号和名称都是编程⼈员根据需要和⼀定的规则任意取的。
也可以认为汇编语⾔的语句⾏是由标记和分隔符(空格)构成。
⼀、标记1.IBM宏汇编的字符集(1)字母(2)数字符(3)特殊字符2.界符⽤于定界⼀个标记的结束或⼀个标记的开始,本⾝具有⼀定的意义。
3.常量出现在汇编语⾔源程序中的固定值称为常量。
(1)数值常量①⼆进制:以字母B结束。
②⼗进制:以字母D或⽆字母结束。
③⼋进制:以字母Q(或O)结束。
④⼗六进制:以字母H结束。
(2)字符常量指⽤单引号或双引号引起的字符或字符串。
4.标识符由程序员⾃⼰建⽴的字符序列(标号或名称)。
⼀个标识符不能超过31个字符,不能以数字开头。
5.保留字汇编语⾔中具有特殊意义的字符序列。
6.注释⼀⾏中分号以后的部分。
⽤于对⼀段或⼀⾏程序进⾏说明,便于阅读和理解。
⼆、符号具有⼀定意义的字符序列。
1.寄存器名2.变量段属性、偏移属性、类型属性3.标号段属性、偏移属性、类型属性4.常数5.其它三、表达式由操作数和运算符组合⽽成的序列。
1.操作数(1)⽴即数(2)寄存器操作数(3)存储器操作数2.运算符(1)算术运算符+、-、*、/、MOD(求余)(2)逻辑运算符AND、OR、NOT、XOR(3)关系运算符EQ、NE、LT、LE、GT、GE结果为“假”时,返回0,结果为“真”时,返回⼆进制全1。
汇编语言程序设计

第4章 汇编语言程序设计
例4.4 显示两位压缩BCD码值(00~99) ,要求不显示前导0。 本例一方面要排除前导0的情况,另一方面 对于全0情况又必须显示一个0,所以形 成了两个双分支结构的程序。
第4章 汇编语言程序设计 DATA SEGMENT BCD DB 04H ; 给出一个BCD码数据 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA BEGIN: MOV AX, DATA MOV DS, AX MOV DL,BCD ;取BCD码 TEST DL,0FFH ;如果这个BCD码是0,则显示为0 JZ ZERO TEST DL,0F0H ;如果这个BCD码高位是0,不显示 JZ ONE MOV CL,4 ;BCD码高位右移为低位 SHR DL,CL OR DL,30H ;转换为ASCII码 MOV AH,2 ;显示 INT 21H
第4章 汇编语言程序设计 ADC MOV MOV MUL ADD DX,0 W+4,DX AX,A B+2 W+2,AX ;部分积2的高16位与进位相加 ;结果保存到从W+4开始的内存单元 ;取被乘数的低16位 ;与乘数的高16位相乘,得到部分积3 ;部分积3的低16位与W+2开始的内存单元相加 ;结果保存在从W+2开始的内存单元 ;部分积3的高16位与W+4开始的内存单元及 ;进位相加,结果保存在从W+4开始的内存单元 ;把进位值保存在从W+6开始的内存单元 ;取被乘数的高16位 ;与乘数的高16位相乘,得到部分积4 ;部分积4的低16位与W+4开始的内存单元相加 ;结果保存在从W+4开始的内存单元 ;部分积4的高16位与W+6开始的内存单元及 ;进位相加,结果保存在从W+6开始的内存单元
汇编语言程序设计(第四版)第4章【课后答案】

汇编语言程序设计(第四版)第4章【课后答案】汇编语言程序设计第四版【课后习题答案】--囮裑為檤第4章基本汇编语言程序设计〔习题4.1〕例题4.2如果要求算术右移8位,如何修改程序。
〔解答〕思路:首先由最高位字节向次低位字节传送……次低位字节向最低位字节传送(共7次);再判最高位字节符号位,如为0,送00h到最高位字节;如为1,送ffh到最高位字节。
传送可参考例题4.2,不过应从第一号字节送第零号字节,……最高位字节向次低位字节传送;也可以用循环来完成:.model small.stack 256.dataqvar dq 1234567887654321h.code.startupmov cx,7mov si,1again: mov al, byte ptr qvar[si]mov byte ptr qvar[si-1],alinc siloop againtest al,80hjz ezzmov bl,0ffhjmp doneezz: mov bl,0done: mov byte ptr qvar[7],bl.exit 0end〔习题4.2〕例题4.2如果要求算术左移7位,如何用移位指令实现。
〔解答〕思路:可设计外循环体为8个字节左移一次,方法是:最低位字节算术左移一次,次低位字节至最高位字节依次带CF 位循环左移一次(内循环共8次),外循环体控制执行7次即可。
.model small.stack 256.dataqvar dq 1234567887654321h.code.startupmov dx, 7 ;外循环次数mov ax, byte ptr qvar[0] ;最低位字节送axlpp: shl ax, 1 ;最低位字节左移一次,其d7移入CF位mov si, 1mov cx, 7 ;内循环次数again: rcl byte ptr qvar[si], 1 ;高位字节依次左移P50inc siloop againdec dxjnz lpp.exit 0.end〔习题4.3〕将AX寄存器中的16位数连续4位分成一组,共4组,然后把这4组数分别放在AL、BL、CL和DL寄存器中。
第四章 汇编语言程序设计

一、算术运算符
包括:+,-,*,/(取商),MOD(取余),SHL,SHR 特点:①运算对象及结果均为整数 ②地址只能加减 例: DA1 DA2 MOV MOV MOV MOV DB 1,2,3,4 DB 20 AX,30*5 汇编时 AL,31MOD5 AL,31/5 AL,DA2-DA1
MOV MOV MOV MOV
如:加法:1001、1D、2B……
特点:计算机能够直接识别,执行速度快;
但不方便记忆和编程
2、汇编语言(Assembly Language) 用助记符来表示指令,如:加法:ADD…… 特点:机器不能识别,需翻译;但仍然面向硬件, 执行速度较快;多用于编制系统程序、实时控制和通 信程序。 3、高级语言(High-level Language) 用数学语言和自然语言编程; 如:加法:+,输出:Printf… 特点:编程方便简单,无需了解机器硬件;但机器 不能识别,需要庞大的翻译系统,速度较慢。
类型 返回值 1 2 4 类型 返回值 -1 [FFH] -2 [FEH] DB DW DD
变量
标号
NEAR FAR
数值返回运算符(续)
LENGTH:
•对于一般变量,返回1; •对于DUP定义的变量,返回单元数(直接返回第一
个DUP前的N值); 说明:DUP为复制操作符,格式:N DUP(表达式); N表示复制次数,表达式为复制内容 例:2 DUP(1,2) 等价于 1,2,1,2
则:COUNT的值为5
COUNT表示:DA1,DA2占的字节总数(长度之和) 七、优先级(P136 表4-3)
4.3 伪指令语句
在汇编时进行处理,主要完成变量定义,段定义,
段分配,指示程序开始和结束等功能。
第4章 汇编语言程序设计

因此, 因此,对例子中的存储器地址作如下运 算: SUM+2 CYCLE-5 NOT_DONE-GO 是有效的表达式。 是有效的表达式。而 SUM-CYCLE
(2)逻辑运算符 逻辑运算符是按位操作的AND、OR、 、 逻辑运算符是按位操作的 、 XOR和NOT。 和 。 1010 1010 1010 1010B AND 1100 1100 1100 1100B=1000 1000 1000 1000B 1100 1100 1100 1100B OR 1111 0000 1111 0000B=1111 1100 1111 1100B NOT 1111 1111 1111 1111B=0000 0000 0000 0000B
ASSUME CS:MY_CODE, ;规定 和DS 规定CS和 : 的内容 DS:MY_DATA : PORT_VA1 EQU 3 ;端口的符号名 GO: MOV AX, MY_DATA ;DS : 初始化为MY_DATA 初始化为 MOV DS, AX MOV SUM, 0 ;清SUM单元 单元
变量可以具有以下几种寻址方式: 变量可以具有以下几种寻址方式: ① 直接寻址 ② 基址寻址 变址(索引) ③ 变址(索引)寻址 ④ 基址变址寻址
2.运算符(Operators) .运算符( ) 算术运算符( Operators) ① 算术运算符(Arithmetic Operators) 逻辑运算符( Operators) ② 逻辑运算符(Logical Operators) 关系运算符( Operators) ③ 关系运算符(Relational Operators) 分析运算符( Operators) ④ 分析运算符(Analytic Operators) 合成运算符( Operators) ⑤ 合成运算符(Synthetic Operators)
第四章-汇编语言程序的设计

第四章汇编语言程序设计本章的汇编语言程序设计的主要容有:汇编语言程序设计概述、汇编语言程序的结构形式、汇编语言的伪指令。
(一个单片机应用系统和其它计算机系统一样,在完成一项具体工作的时候,它要按照一定的次序,去执行操作,这些操作实际上就是由设计人员,以单片机能够接受的指令编制的程序,那么无论计算机也好,单片机也好,实际上编制程序的过程,就是用计算机来反映设计者的编程思想,那么这一章中,我们将向大家介绍怎样使用单片机指令系统来编制一些应用程序。
在介绍之前,我们还是来学习汇编语言的一些基础知识)4.1 汇编语言程序设计概述1、计算机的汇编语言以助记符表示的指令,每一条指令就是汇编语言的一条语句。
(汇编语言程序设计实际上就是使用汇编指令来编写计算机程序。
汇编语言的语句有严格的格式要求)2、汇编语言的语句格式MCS-51汇编语言的语句格式表示如下:[<标号>]: <操作码> [<操作数>]; [<注释>]标号:指令的符号地址,有了标号,程序中的其它语句才能访问该语句。
①标号是由1~8个ASCII字符组成,但头一个字符必须是字母,其余字符可以是字母、数字或其它特定字符。
②不能使用汇编语言已经定义了的符号作为标号,如指令助记符、伪指令记忆符以及寄存器的符号名称等。
(同一个标号在程序中只能定义一次,不能重复定义;一条语句可以有标号,也可以没有标号,所以是否有标号,取决于程序中是否需要访问该语句。
)操作码:规定语句执行的操作容,操作码是以指令助记符表示的,是汇编指令格式中唯一不能空缺的部分。
操作数:给指令的操作提供数据或地址。
注释:是对语句或程序段的解释说明。
(在单片机中,这四个部分怎么加以区分呢?使用分界符)分界符(分隔符):用于把语句格式中的各部分隔开,以便于编译程序区分不同的指令段。
冒号(:)用于标号之后空格()用于操作码和操作数之间逗号(,)用于操作数之间,分割两个以上的操作数分号(;)用于注释之前。
第4章 汇编 语言程序设计

DJNZ R1,LOOP ;R1减1不为零,则跳LOOP处 NOP
HERE:SJMP
HERE
上述4个字段应该遵守的基本语法规则如下。
10
1.标号字段
语句所在地址的标志符号,才能被访问。如标号 “START”和“LOOP”等。有关标号规定如下: (1)标号后必须跟冒号“:”。 (2)标号由1~8个ASCII码字符组成,第一个字符必须是
8
汇编语言语句是符合典型的汇编语言的四分段格式:
标号字段 (LABLE) 操作码字段 (OPCODE) 操作数字段 (OPRAND) 注释字段 (COMMENT)
标号字段和操作码字段之间要有冒号“:”分隔; 操作码字段和操作数字段间的分界符是空格; 双操作数之间用逗号相隔;
操作数字段和注释字段之间的分界符用分号“;”。
表示的机器语言程序,才能识别和执行。
完成“翻译”的程序称为汇编程序。经汇编程序“汇编”得 到的以“0”、“1”代码形式表示的机器语言程序称为目标 程序。
5
优点:用汇编语言编写程序效率高,占用存储空间小,运行 速度快,能编写出最优化的程序, 缺点:可读性差,离不开具体的硬件,是面向“硬件”的语 言通用性差。 2.高级语言
功能是把P1.6的位地址赋给变量QA。
4.2
汇编语言源程序的汇编
“汇编”?汇编可分为手工汇编和机器汇编两类。
22
4.2.1
手工汇编
通过查指令的机器代码表(表3-2),逐个把助记符指令 “翻译”成机器代码,再进行调试和运行。 手工汇编遇到相对转移偏移量的计算时,较麻烦,易出 错,只有小程序或受条件限制时才使用。实际中,多采用“ 汇 编程序”来自动完成汇编。
16
重叠。例如:
ORG …… ORG …… ORG …… 2000H 2500H 3000H
单片机第4章汇编语言程序设计

4.2 伪指令
伪指令是在机器汇编中告诉汇编程序 如何汇编、对汇编过程进行控制的命令。 伪指令与汇编语言指令不同,只在源程序 中出现,不产生任何机器代码,在程序的 运行过程中不起作用,故称为“伪指令”。
处理 判断 连接
2.绘制程序流程图 简单的问题可由文字说明, 当问题复杂时,将文字说明的步骤以图形符号表示, 称流程图。
3.编写源程序 用汇编语言把流程图所表明的 步骤描述出来,实现流程图中每一框内的要求,从 而编制出一个有序的指令流,即汇编语言源程序。
4.汇编、调试 汇编语言是用指令助记符代替机 器码的编程语言,所编写的程序是不能在计算机上 直接执行的,因此利用它所编写的汇编语言程序必 须转换为单片机能执行的机器码形式的目标程序才 能运行,我们把这一过程称为汇编,进行汇编的程 序称为汇编程序。
4. 定义字伪指令DW
[标号:] DW 16位字数据表
该指令的功能与DB相似, 区别仅在于从指定地
址开始存放的是指令中的16位数据, 而不是字节串。
每个16位数据要占两个存储单元, 高8 位先存(低位
地址), 低 8 位后存(高位地址)。
1403H 3CH
ORG 1400H DATA1:DW 324AH,3CH
散转程序是分支程序的一种, 它可根据运算结果或输入数 据将程序转入不同的分支。MCS - 51 指令系统中有一条跳转指 令JMP@A+DPTR,用它可以很容易地实现散转功能。该指令 把累加器的8位无符号数与16位数据指针的内容相加, 并把相加 的结果装入程序计数器PC,控制程序转向目标地址去执行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章汇编语言程序设计4.1 汇编语言上机过程4.2 汇编语言程序结构4.3 常用伪操作介绍4.4 汇编语言程序举例4.5 BIOS和DOS功能调用4.6 汇编语言程序设计4.1 汇编语言上机过程D:>EDIT ABC.asmD:>MASM ABC; 有语法错,回EDIT下改该程序D:>LINK ABC; Array有错,回在EDITD:>ABC运行结果错,回EDIT下改程序或在DEBUG找原因。
D:>DEBUG ABC.exe4.2二、语句结构语句)指示性语句(伪指令语句)分段结构程序按段编写, 与8088内存分段编址相对应。
每段由伪操作SEGMENT开始、由ENDS结束。
程序最后为END结束语句,后跟一启动地址。
启动地址指示程序开始执行的第一条语句。
程序中设有返回DOS的功能。
使程序执行完后返回DOS系统的命令接受状态。
程序中用到内存操作数时,应按操作数的寻址方式,给相应的段寄存器赋值;汇编语言程序结构例一movs.asm;实现数据传送功能aa SEGMENT ;数据段1str1 DB 'Hello!’aa ENDSbb SEGMENT ;数据段2str2 DB 6 dup (?)bb ENDScc SEGMENT ;代码段 ASSUME CS:cc, DS:aa, ES:bb start: CLDMOV AX , aaMOV DS , AXLEA SI , str1MOV AX , SEG str2MOV ES , AXMOV DI ,OFFSET str2MOV CX , 6REP MOVSBMOV AH , 4CHINT 21H ;返回DOScc ENDSEND start ;指示程序结束程序可由多个段构成,至少有一个代码段;汇编语言程序结构例二(子程结构) scans.asm ;用二进制显示中断向量表中(0:0~0:3FFH)数据D0H的个数key EQU 0D0H ;用符号表示常量(关键字)code SEGMENT ;代码段开始 ASSUME CS:codebegin: MOV AX , 0000HMOV DS , AXMOV SI , 0000HMOV CX , 0400HMOV BX , 0MOV AL , keynext: CMP [ SI ] , ALJNZ pointINC BXpoint: INC SILOOP nextCALL display ; 调用显示子程 MOV AH, 4CH ; 返回DOSINT 21H;用二进制显示BX内容子程display PROCMOV CX , 16rotate: ROL BX , 1MOV DL , BLAND DL , 01HADD DL , 30HMOV AH , 2HINT 21HLOOP rotateRET ;子程返回display ENDPcode ENDS ;代码段结束END begin ;指示程序结束和;程序入口1. 名字项据语句功能的不同,名字项可用来表示段名、变量名、标号、过程名以及常量名等。
名字项用一个符号表示。
对符号的规定:①由字符A~Z ,a~z ,0~9及符号@、$、下划线_ 等组成,最长31个字符,超出部分忽略。
②不能用数字打头,以免与十六进制数相混。
③不使用汇编程序中的保留字。
(如指令的助记符等)④对定义的符号不区分大小写。
2. 助记符项助记符可以是指令、伪操作中的助记符。
3.操作数项 操作数给出参与操作的数或数所在的地方。
操作数多于一个时,用逗号分开。
操作数可以是常数、寄存器、存储器操作数、标号名、过程名或表达式等。
常数给出具体的数据。
可以是数字常量或字符常量。
◢◢数字默认十进制,也可加D表示十进制数。
如 1234D, 1234◢◢数字后加B表示二进制数。
如 1010B◢◢数字后加H表示十六进制数。
如 1234H◢◢字符常量,用单引号表示。
如‘1234’汇编时,用字符对应的ASCII表示。
如 31H, 32H, 33H, 34H4.注释项 由分号引出,用来说明语句或程序的功能。
汇编程序对分号后的内容不做处理。
作用:①注释程序,增强程序可读性。
②可放在语句最前,暂时注释某语句,调试程序用。
/ 第四节汇编语言程序举例一、程序开始和结束二、段定义三、变量定义四、ASSUME语句汇编语言程序举例一了解DOS的返回,装入功能五、表达式及表达式中的操作符汇编语言程序例二六、过程定义 (第五节程序设计介绍)七、等值定义 (第五节程序设计介绍) 汇编语言程序例三 (第五节程序设计介绍)aa SEGMENT ;数据段1str1 DB 'Hello!’aa ENDSbb SEGMENT ;数据段2str2 DB 6 dup (?)bb ENDScc SEGMENT ;代码段ASSUME CS:ccASSUME DS:aa, ES:bbstart: CLDMOV AX , aaMOV DS , AXLEA SI , str1MOV AX , bbMOV ES , AXLEA DI , str2MOV CX , 6REP MOVSBMOV AH , 4CHINT 21Hcc ENDSEND startD:\masm>DEBUG hello2.exe-U :查看代码段12A0:0000 FC CLD12A0:0001 B89E12 MOV AX , 129E12A0:0004 8ED8 MOV DS , AX12A0:0006 8D360000 LEA SI , [0000]12A0:000A B89F12 MOV AX , 129F12A0:000D 8EC0 MOV ES , AX12A0:000F 8D3E0000 LEA DI , [0000]12A0:0013 B90600 MOV CX , 000612A0:0016 F3 REPZ12A0:0017 A4 MOVSB12A0:0018 B44C MOV AH,4C12A0:001A CD21 INT 21、、、-D 129E:0 L10 ;查看数据段1的内容129E:0000 48 65 6C6C 6F 21 00 00-00 00 00 00 00 00 00 00Hello!..........-D 129F:0 L10 ;查看数据段2的内容129F:0000 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00................4.3 常用伪操作介绍一、程序开始和结束二、段定义三、变量定义四、ASSUME语句五、表达式中的操作符六、过程定义七、等值定义一、模块定义和程序结束伪操作1 . NAME 和 TITLE 伪操作格式 NAME 模块名格式 TITLE 模块名▲在源程序开始可用 NAME 或 TITLE 为模块命名,模块名的作用是指示给连接程序进行连接用。
▲源程序中可无模块定义,此时源文件名作为模块名。
2. END伪操作格式 END 启动地址▲作用是指示源程序到此结束。
汇编程序对 END 之后的语句不进行处理。
程序中所有有效语句应放在 END 语句之前。
▲源程序中必须有 END 结束语句。
汇编程序对无 END 语句的源程序不进行处理,只给出无 END 语句错误信息。
假设 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 fileEnd of file encountered on input file 49968 + 421181 Bytes symbol space free0 Warning Errors0 Severe ErrorsD:\由于没有END语句,汇编程序根本没对源程序进行汇编,此时显示警告性错误总数为 0,严重性错误总数为 0,用户不要被此值的误导。
二、段定义伪操作格式段名 SEGMENT、、、、、、段名 ENDS▲段定义由伪操作SEGMENT开始、ENDS 结束。
其中: SEGMENT 和ENDS 必须成对出现,且语句前必须有段名,段名必须相同。
▲ SEGMENT和ENDS语句之间可以有指令和其他伪操作,表示存放在该段内存的变量、指令或其他伪操作对该段内存的处理▲程序中可以定义多个段。
▲程序经汇编、连接及装入内存后,段名为一具体的段值。
aa SEGMENT ;数据段1str1 DB 'Hello!’aa ENDSbb SEGMENT ;数据段2str2 DB 6 dup (?)bb ENDScc SEGMENT ;代码段ASSUME CS:ccASSUME DS:aa, ES:bbstart: CLDMOV AX , aaMOV DS , AXLEA SI , str1MOV AX , bbMOV ES , AXLEA DI , str2MOV CX , 6REP MOVSBMOV AH , 4CHINT 21Hcc ENDSEND start三、变量定义伪操作格式变量名类型助记符操作数 [ ,操作数 , ... ]▲用来定义程序中所用的内存操作数。
其中变量名指示内存操作数的地址(符号地址)类型助记符指示内存操作数的类型(字节、字、双字等)操作数指示内存操作数的内容▲汇编程序将定义的操作数,按其类型分配内存单元数,顺序存入变量名指向的内存单元中。
▲常用的类型助记符有:DB 指示其后的操作数为字节类型DW 指示其后的操作数为字类型DD 指示其后的操作数为双字类型四、ASSUME伪操作格式 ASSUME 段寄存器:段名 [, 段寄存器:段名, … ]其中段寄存器为CS、DS、ES、SS中的一个段名为用伪操作SEGMENT定义过的段名例 ASSUME CS: cc , DS:aa▲ ASSUME 伪操作的作用指示汇编程序指令中用到的标号、过程及变量所在的段。
其中对标号、过程必须用 CS 段寄存器指示对变量可用CS、DS、ES、SS 段寄存器指示4.4 汇编语言程序举例一、程序开始和结束二、段定义三、变量定义四、ASSUME语句汇编语言程序举例一了解DOS的返回,装入功能五、表达式及表达式中的操作符汇编语言程序例二六、过程定义 (第五节程序设计介绍)七、等值定义 (第五节程序设计介绍) 汇编语言程序例三 (第五节程序设计介绍)code SEGMENT ASSUME CS: codestart:MOV CX , 8 ;显示字符个数为8next:SHL BL , 1 ;将显示位移至CF中JC one ;CF=1?MOV DL , 30H ;CF=0, 将0的ASCII放在DL中JMP exitone: MOV DL , 31H ;CF=1, 将1的ASCII放在DL中exit: MOV AH , 2INT 21H ;调用DOS功能显示DEC CX ;循环次数减 1 JNZnext ;判断是否结束MOV AH, 4CH ;返回DOS INT 21H code ENDS END start4.5 BIOS和DOS中断功能调用一、概述1. BIOS和DOS中断子程层次特点2. 中断类型分类3. 调用方法二、BIOS功能调用1.设置显示方式 ( 10H类型,00H功能 )2.置光标位置 ( 10H类型,02H功能 )3.清屏、清窗口 ( 10H类型,06H或07H功能 )三、 DOS系统功能调用 ( 21H类型中断调用 )1.显示单字符 ( 02H功能 )2.显示字符串 ( 09H功能 )3.单字符输入 ( 01H、07H、08H功能 )4.字符串输入 ( 0AH功能 )5.检测键盘状态( 0BH功能 )6.保存中断向量 ( 35H功能 ) (第六章介绍)7.设置中断向量 ( 25H功能 )复习内容:P339~P247(新),P228~P246(旧)预内容习: P 110~P140(新),P106~P134(旧)2.编写完整汇编语言程序,要求上机调试出来:(1)清屏,在10行5列上显示“ Hello China!”(2)将0AH功能输入的字符串, 用09H功能显示出来。