微机接口第5章 汇编语言程序设计ppt课件_第1页
微机接口第5章 汇编语言程序设计ppt课件_第2页
微机接口第5章 汇编语言程序设计ppt课件_第3页
微机接口第5章 汇编语言程序设计ppt课件_第4页
微机接口第5章 汇编语言程序设计ppt课件_第5页
已阅读5页,还剩71页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机原理与接口技术微机原理与接口技术徐建平徐建平 成贵学成贵学 第第5 5章章 汇编语言程序设计汇编语言程序设计 【本章内容提要】【本章内容提要】 n掌握汇编语言程序的编辑、汇编、连接和调试掌握汇编语言程序的编辑、汇编、连接和调试n掌握汇编语言的概念、助记符和语句格式,以掌握汇编语言的概念、助记符和语句格式,以及常数、表达式、标号、变量和运算符的定义及常数、表达式、标号、变量和运算符的定义和用法和用法n掌握汇编语言的常用伪指令的格式和用法,以掌握汇编语言的常用伪指令的格式和用法,以及源程序的结构及源程序的结构n掌握汇编程序设计的基本方法掌握汇编程序设计的基本方法n掌握高级汇编程序设计方法掌握高

2、级汇编程序设计方法5.1 汇编语言程序的编辑、汇编语言程序的编辑、汇编、连接和调试汇编、连接和调试n5.1.1 源程序编辑器源程序编辑器EDITn5.1.2 汇编程序汇编程序MASM n5.1.3 连接程序连接程序LINK n5.1.4 程序的运行和调试程序的运行和调试5.2 5.2 汇编语言入门汇编语言入门 5.2.1 5.2.1 汇编语言概述汇编语言概述 n由于计算机只能识别和执行由二进制代码由于计算机只能识别和执行由二进制代码组成的机器指令,而这种二进制机器语言组成的机器指令,而这种二进制机器语言人很难理解人很难理解n于是人们采用字母、符号等来表示机器指于是人们采用字母、符号等来表示机器

3、指令的二进制代码,这就是汇编语言。令的二进制代码,这就是汇编语言。n汇编语言又称为符号语言。汇编语言又称为符号语言。5.2.2 5.2.2 汇编语言中的助记符汇编语言中的助记符 三种助记符三种助记符1 1指令助记符指令助记符2 2伪指令助记符伪指令助记符3 3其他助记符其他助记符1指令助记符指令助记符n指令助记符是汇编语言的基本助记符,它指令助记符是汇编语言的基本助记符,它在汇编时被转换成二进制的指令代码在汇编时被转换成二进制的指令代码n每一条指令代码都对应着每一条指令代码都对应着CPUCPU的一种操作。的一种操作。n由指令助记符构成的可执行语句称为指令由指令助记符构成的可执行语句称为指令语句

4、。语句。n指令系统中的每条指令都是指令语句。指令系统中的每条指令都是指令语句。2 2伪指令助记符伪指令助记符n伪指令助记符是在汇编过程中用来控制汇编伪指令助记符是在汇编过程中用来控制汇编程序的一些特定的助记符程序的一些特定的助记符n它在汇编时不产生机器码,也不产生任何操它在汇编时不产生机器码,也不产生任何操作,它在汇编语言源程序中可以构成独立的作,它在汇编语言源程序中可以构成独立的语句。语句。n由伪指令助记符构成的语句称为伪指令语句,由伪指令助记符构成的语句称为伪指令语句,又称指示性语句。又称指示性语句。3 3其他助记符其他助记符n在汇编语言中,还有另一些常见的助记符,在汇编语言中,还有另一些

5、常见的助记符,如标号、常量、变量和表达式等,这些助记如标号、常量、变量和表达式等,这些助记符是可以由用户自己定义的。符是可以由用户自己定义的。n关于这些助记符的相关概念我们将在后面的关于这些助记符的相关概念我们将在后面的内容中作详细介绍。内容中作详细介绍。5.2.3 5.2.3 汇编语言的语句格式汇编语言的语句格式n汇编语言的语句有指令语句和伪指令语句两种。汇编语言的语句有指令语句和伪指令语句两种。n指令语句的格式为:指令语句的格式为:n 标号标号:指令助记符指令助记符 操作数操作数, ,操作数操作数;注释注释 n伪指令语句的格式为:伪指令语句的格式为:n 名字名字 伪指令助记符伪指令助记符

6、操作数操作数,操作数操作数;注释注释 (1 1标号和名字标号和名字n标号可作为指令语句的符号地址,用来代表标号可作为指令语句的符号地址,用来代表该指令语句在存储器中的地址。该指令语句在存储器中的地址。n伪指令语句中的名字可以是变量名、段名、伪指令语句中的名字可以是变量名、段名、过程名、符号名等,用来代表它们在存储器过程名、符号名等,用来代表它们在存储器中的地址。中的地址。n指令语句中的标号后面有冒号,而伪指令语指令语句中的标号后面有冒号,而伪指令语句中的名字后面是空格。句中的名字后面是空格。 (2 2助记符助记符n助记符是汇编语句中必不可少的部分。助记符是汇编语句中必不可少的部分。n指令助记符

7、规定了指令语句的操作类型,指令助记符规定了指令语句的操作类型,n伪指令助记符规定了伪指令语句的伪操作功伪指令助记符规定了伪指令语句的伪操作功能。能。(3 3操作数操作数n操作数可以是寄存器、存储器、常数、变量、操作数可以是寄存器、存储器、常数、变量、标号和表达式。标号和表达式。n指令语句的操作数可能是一个、两个或没有,指令语句的操作数可能是一个、两个或没有,它们之间用逗号分隔。它们之间用逗号分隔。n伪指令语句的操作数根据伪操作命令的不同伪指令语句的操作数根据伪操作命令的不同而不同,有的伪指令不允许有操作数,有的而不同,有的伪指令不允许有操作数,有的伪指令允许带多个操作数。伪指令允许带多个操作数

8、。(4 4注释注释n以分号开头,直到行尾结束,用来对语句或以分号开头,直到行尾结束,用来对语句或程序的功能加以说明,增加程序的可读性。程序的功能加以说明,增加程序的可读性。n它不是程序的可执行部分,在汇编时不产生它不是程序的可执行部分,在汇编时不产生任何代码。任何代码。5.2.4 5.2.4 汇编语言的常数和表达式汇编语言的常数和表达式 1 1常数常数数值常数:可以是二进制常数、数值常数:可以是二进制常数、八进制常数、十进制常和十六八进制常数、十进制常和十六进制常数。其中,不同的数制进制常数。其中,不同的数制要用后缀表明。例如,要用后缀表明。例如,6BH6BH,10110111B1011011

9、1B等。等。字符串常数:由单引号括起来的字符串常数:由单引号括起来的一个或多个字符,例如,一个或多个字符,例如,I AM I AM A STUDENTA STUDENT。2 2表达式表达式n汇编语言中的表达式分为数字表达式和地汇编语言中的表达式分为数字表达式和地址表达式两种。址表达式两种。n汇编时对表达式进行计算,如果表达式的汇编时对表达式进行计算,如果表达式的结果是一个数值,则称为数字表达式;结果是一个数值,则称为数字表达式;n如果表达式的结果是一个存储单元的地址,如果表达式的结果是一个存储单元的地址,则称为地址表达式。则称为地址表达式。n表达式是由操作数和运算符组成的。表达式是由操作数和运

10、算符组成的。n操作数可以是常数、标号、变量、寄存器操作数可以是常数、标号、变量、寄存器或表达式;或表达式;n运算符有运算符有3 3类,分别是算术运算符、逻辑运类,分别是算术运算符、逻辑运算符和关系运算符,如表算符和关系运算符,如表5-15-1所示。所示。(1 1算术运算符算术运算符n算术运算符常用于数字表达式或地址表达式算术运算符常用于数字表达式或地址表达式中,将其用于地址表达式中时,必须保证运中,将其用于地址表达式中时,必须保证运算有意义。算有意义。n例如,若例如,若COUNT的偏移地址为的偏移地址为1000H,那,那么么n LEA SI,COUNT+5n等效于:等效于:LEA SI,100

11、5H。(2 2逻辑运算符逻辑运算符n逻辑运算符只能用于数字表达式中,不能用于逻辑运算符只能用于数字表达式中,不能用于地址表达式中。地址表达式中。n运算时是将两个数字操作数分别按位进行运算。运算时是将两个数字操作数分别按位进行运算。n例如:例如:n MOV AL, 0ABH AND 0FH MOV AL, 0ABH AND 0FHn等效于:等效于:MOV ALMOV AL,0BH0BH。 (3 3关系运算符关系运算符n关系运算符连接的两个操作数必须都是数字关系运算符连接的两个操作数必须都是数字操作数或者都是地址操作数操作数或者都是地址操作数n运算结果是一个逻辑值:如果关系为真,则运算结果是一个逻

12、辑值:如果关系为真,则结果为结果为0FFFFH0FFFFH;如果关系为假,则结果为;如果关系为假,则结果为0 0。n例如:例如:n MOV AX MOV AX,NUM GT 100NUM GT 100,n如果如果NUMNUM大于大于100100,则等效于,则等效于 MOV AX MOV AX,0FFFFH0FFFFHn否则,将等效于否则,将等效于MOV AXMOV AX,0 0。5.2.5 5.2.5 汇编语言的标号和变量汇编语言的标号和变量1 1标号标号n标号是指令语句的标识符,用来表示该指令标号是指令语句的标识符,用来表示该指令所在内存单元的地址。所在内存单元的地址。n在汇编语言程序中,标

13、号常用在第一条指令、在汇编语言程序中,标号常用在第一条指令、转移和循环的目标指令,转移和循环的目标指令,n以及子程序的第一条指令之前,以及子程序的第一条指令之前,n并作为转移指令、循环指令或子程序调用指并作为转移指令、循环指令或子程序调用指令的操作数,从而确定程序转移的目标地址。令的操作数,从而确定程序转移的目标地址。 标号有标号有3 3个属性:个属性:n段地址段地址SEGSEG):定义标号所在段的起始地址):定义标号所在段的起始地址n偏移地址偏移地址OFFSETOFFSET):定义标号所在位置与段):定义标号所在位置与段的起始地址之间的偏移量;的起始地址之间的偏移量;n类型类型TYPETYP

14、E):可以是):可以是NEARNEAR段内转移或段内转移或FARFAR段间转移),一般默认为段间转移),一般默认为NEARNEAR。2变量n变量主要用来定义存放在存储单元中的数变量主要用来定义存放在存储单元中的数据,一般都在数据段或附加段中定义,并据,一般都在数据段或附加段中定义,并且在程序中可以随时修改其值。且在程序中可以随时修改其值。n每个变量都有一个变量名,作为存储单元每个变量都有一个变量名,作为存储单元的名字或符号地址,的名字或符号地址,n我们通过变量名对存储单元中的数据进行我们通过变量名对存储单元中的数据进行访问。访问。变量的定义格式为:变量的定义格式为:变量名变量名 DB DB 表

15、达式表达式;定义字节变量;定义字节变量变量名变量名 DW DW 表达式表达式;定义字变量;定义字变量变量名变量名 DD DD 表达式表达式;定义双字变量;定义双字变量变量名变量名 DQ DQ 表达式表达式;定义;定义8 8字节变量字节变量变量名变量名 DT DT 表达式表达式;定义;定义1010字节变量字节变量变量具有变量具有5 5种属性:种属性:n段地址段地址SEGSEG):定义变量所在段的起始地址;):定义变量所在段的起始地址;n偏移地址偏移地址OFFSETOFFSET):定义变量的位置与段的起始):定义变量的位置与段的起始地址之间的偏移量;地址之间的偏移量;n类型类型TYPETYPE):

16、定义变量所占存储单元的字节数,):定义变量所占存储单元的字节数,用用DBDB、DWDW和和DDDD伪指令定义的变量类型分别是字节伪指令定义的变量类型分别是字节BYTEBYTE)、字)、字WORDWORD和双字和双字DWORDDWORD)。)。n长度长度LENGTHLENGTH):定义变量的个数。):定义变量的个数。n大小大小SIZESIZE):分配给变量的总字节数。):分配给变量的总字节数。5.2.6 5.2.6 汇编语言的属性运算符汇编语言的属性运算符和表达式和表达式n用来获取或重新定义变量或标号属性的运算用来获取或重新定义变量或标号属性的运算符称为属性运算符。符称为属性运算符。(1取地址运

17、算符取地址运算符SEGn格式:格式:SEG 变量或标号变量或标号n功能:返回变量或标号的段地址。功能:返回变量或标号的段地址。n例如,例如,n MOV AX,SEG COUNTn指的是将变量指的是将变量COUNT的段地址送入的段地址送入AX。(2 2取偏移地址运算符取偏移地址运算符OFFSETOFFSETn格式:格式:OFFSET OFFSET 变量或标号变量或标号n功能:返回变量或标号的偏移地址。功能:返回变量或标号的偏移地址。n例如,例如,n MOV SI MOV SI,OFFSET COUNTOFFSET COUNTn指的是将变量指的是将变量COUNTCOUNT的偏移地址送入的偏移地址送

18、入SISI。(3 3取类型运算符取类型运算符TYPETYPEn格式:格式:TYPE TYPE 变量或标号变量或标号n功能:返回变量或标号的类型值。如表功能:返回变量或标号的类型值。如表5-25-2所示。所示。n例如,指令:例如,指令:n MOV AX MOV AX,TYPE COUNTTYPE COUNTn指的是将变量指的是将变量COUNTCOUNT的类型值送入的类型值送入AXAX。(4 4取变量长度运算符取变量长度运算符LENGTHLENGTHn格式:格式:LENGTH LENGTH 变量变量n功能:返回变量的长度即变量中元素的功能:返回变量的长度即变量中元素的个数),可以是以字节、字或双字

19、为单位。个数),可以是以字节、字或双字为单位。n例如,定义例如,定义n COUNT DW 100 DUP(1) COUNT DW 100 DUP(1),n则则LENGTH COUNTLENGTH COUNT的值为的值为100100。n再如,定义再如,定义n BUFF DD 1 BUFF DD 1,2 2,3 3n则则LENGTH BUFFLENGTH BUFF的值为的值为1 1。(5 5取变量总字节数运算符取变量总字节数运算符SIZESIZEn格式:格式:SIZE SIZE 变量变量n功能:返回变量所包含的总字节数。功能:返回变量所包含的总字节数。n例如,定义例如,定义n COUNT DW 1

20、00 DUP(1) COUNT DW 100 DUP(1)nSIZE COUNTSIZE COUNT的值为的值为200200。(6 6类型运算符类型运算符PTRPTRn格式:类型格式:类型 PTR PTR 变量、标号或表达式变量、标号或表达式n功能:对已定义的变量、标号或表达式,临功能:对已定义的变量、标号或表达式,临时转换其类型,类型可以是时转换其类型,类型可以是BYTEBYTE、WORDWORD、DWORDDWORD、NEARNEAR或或FARFAR。n例如,指令:例如,指令:n MOV AX MOV AX,WORD PTR COUNTWORD PTR COUNTn指的是将变量指的是将变量

21、COUNTCOUNT临时转换成字类型。临时转换成字类型。(7 7类型定义运算符类型定义运算符THISTHISn格式:变量或标号格式:变量或标号 EQU THIS EQU THIS 类型类型n功能:指定变量或标号的类型,但不为其功能:指定变量或标号的类型,但不为其分配存储单元,所定义变量的段地址和偏分配存储单元,所定义变量的段地址和偏移地址与下一个存储单元地址相同。移地址与下一个存储单元地址相同。n例如,例如,nCOUNT EQU THIS BYTEnRESULT DW 100 DUP (?)n该语句定义该语句定义COUNT为字节类型,其地址为字节类型,其地址与与RESULT完全相同。留意,这里

22、完全相同。留意,这里RESULT是字型类型。是字型类型。 (8 8段超越前缀:段超越前缀:n格式:段寄存器名格式:段寄存器名: :变量、标号或地址表达式变量、标号或地址表达式n功能:给变量、标号或地址表达式临时指定功能:给变量、标号或地址表达式临时指定一个段属性。一个段属性。n例如,指令:例如,指令:n MOV AX MOV AX,ES:1000HES:1000Hn指的是将附加段中偏移地址为指的是将附加段中偏移地址为1000H1000H的内存单的内存单元的内容送入元的内容送入AXAX。(9 9取高字节运算符取高字节运算符HIGHHIGHn格式:格式:HIGH HIGH 变量或标号变量或标号n功

23、能:分离出变量或标号对应的运算对象功能:分离出变量或标号对应的运算对象的高字节。的高字节。n例如,指令:例如,指令:n DATA EQU 1234H DATA EQU 1234Hn那么那么 MOV AL,HIGH DATA MOV AL,HIGH DATA n结果结果: :(ALAL)=12H=12H。(1010取低字节运算符取低字节运算符LOWLOWn格式:格式:LOW LOW 变量或标号变量或标号n功能:分离出变量或标号对应的运算对功能:分离出变量或标号对应的运算对象的低字节。象的低字节。n例如,指令:例如,指令:n DATA EQU 1234H DATA EQU 1234Hn那么那么 M

24、OV AL,LOW DATA MOV AL,LOW DATAn的结果为的结果为ALAL)=34H=34H。 (1111短转移运算符短转移运算符SHORTSHORTn格式:格式:SHORT SHORT 标号标号n功能:说明转移指令中的转移为短转移,即功能:说明转移指令中的转移为短转移,即目标地址与本指令之间的距离在目标地址与本指令之间的距离在-128127-128127字字节范围内。节范围内。n例如,指令:例如,指令:n JMP SHORT NEXT JMP SHORT NEXT,n限制转移范围小于限制转移范围小于128128个字节。个字节。5.2.7 常用伪指令常用伪指令1 1数据定义伪指令数

25、据定义伪指令n格式:变量格式:变量 数据定义伪指令数据定义伪指令 表达式表达式n功能:为数据分配存储单元,其类型由使功能:为数据分配存储单元,其类型由使用的数据定义伪指令决定,如表用的数据定义伪指令决定,如表5-35-3所示。所示。2 2符号定义伪指令符号定义伪指令(1 1赋值伪指令赋值伪指令格式:标识符格式:标识符 EQU EQU 表达式表达式功能:用一个标识符来表示表达功能:用一个标识符来表示表达式的值,但并不为其分配内存单式的值,但并不为其分配内存单元。元。EQUEQU伪指令不能对标识符进伪指令不能对标识符进行再定义。行再定义。n例如,例如,n COUNT EQU 10 COUNT EQ

26、U 10n表示给表示给COUNTCOUNT赋值为赋值为1010;n NUM EQU TABBX NUM EQU TABBX33n表示将表达式表示将表达式TABBXTABBX33的值赋值给的值赋值给NUMNUM。(2 2等号伪指令等号伪指令n格式:标识符表达式格式:标识符表达式n功能:与功能:与EQUEQU的功能相同,且也不分配内的功能相同,且也不分配内存单元,但存单元,但“=”“=”可以对同一标识符进行可以对同一标识符进行重新定义。重新定义。n例如,可以这样定义变量例如,可以这样定义变量COUNTCOUNT:n COUNT COUNT1010n COUNT COUNTCOUNTCOUNT1 1

27、(3 3标号定义伪指令标号定义伪指令n格式:变量或标号格式:变量或标号 LABEL LABEL 类型类型n功能:定义或修改变量或标号的类型。功能:定义或修改变量或标号的类型。n例如,例如,COUNT LABEL BYTECOUNT LABEL BYTEn DB 10 DB 10n功能是定义变量功能是定义变量COUNTCOUNT为字节型变量,值为为字节型变量,值为1010。实训实训5-2 统计一组数据中正数、统计一组数据中正数、零和负数的个数零和负数的个数 DSEG SEGMENTDSEG SEGMENT; ;数据段,给变量指定数据,分数据段,给变量指定数据,分配存储空间配存储空间 ARRAY

28、DB 5,3,-4,0,-5,-3 ARRAY DB 5,3,-4,0,-5,-3 ; ;定义一个数定义一个数组组 NUM DB 0,0,0 NUM DB 0,0,0; NUM; NUM中用于存放正数、中用于存放正数、零和负数的个数零和负数的个数DSEG ENDSDSEG ENDSSSEG SEGMENTSSEG SEGMENT; ;堆栈段堆栈段 DB 100 DUP(0) DB 100 DUP(0)SSEG ENDSSSEG ENDSCSEG SEGMENTCSEG SEGMENT; ;代码段代码段 ASSUME CS: CSEG, DS: DSEG, SS: SSEG ASSUME CS:

29、 CSEG, DS: DSEG, SS: SSEGSTART: MOV AX, DSEGSTART: MOV AX, DSEG ; ;将数据段基址装入数据段寄存器将数据段基址装入数据段寄存器 MOV DS, AX MOV DS, AX MOV SI, 0 MOV SI, 0; ;将将SISI的初值置为的初值置为0 0 CALL COUNT CALL COUNT; ;调用调用COUNTCOUNT子程序子程序 ADD NUM2, 30H ADD NUM2, 30H; ;将负数的个数转换为将负数的个数转换为ASCIIASCII码码 MOV DL, NUM2 MOV DL, NUM2;DOS;DOS功

30、能调用,显示负数的个数功能调用,显示负数的个数 MOV AH, 02H MOV AH, 02H INT 21H INT 21H MOV AH, 4CH MOV AH, 4CH; ;系统功能调用,结束程序返回系统功能调用,结束程序返回DOSDOS INT 21H INT 21HCOUNT PROC NEARCOUNT PROC NEAR ;COUNT ;COUNT过程过程 MOV CX, 6 MOV CX, 6 ; ;将循环的次数送入将循环的次数送入CXCX LOP: CMP ARRAYSI, 0 LOP: CMP ARRAYSI, 0; ;将数组中的各元素与将数组中的各元素与0 0比较比较 J

31、Z ZERO JZ ZERO ; ;结果为结果为0 0时转移到时转移到ZEROZERO处处 JNS ZHENG JNS ZHENG ; ;结果为正时转移到结果为正时转移到ZHENGZHENG处处 ADD NUM2, 1 ADD NUM2, 1; ;统计负数的个数统计负数的个数 JMP NEXT JMP NEXT ; ;转移到转移到NEXTNEXT处处ZERO: ADD NUM1, 1ZERO: ADD NUM1, 1; ;统计统计0 0的个数的个数 JMP NEXT JMP NEXTZHENG: ADD NUM, 1ZHENG: ADD NUM, 1; ;统计正数的个数统计正数的个数NEXT:

32、 INC SINEXT: INC SI ;SI ;SI的内容加的内容加1 1 LOOP LOP LOOP LOP ; ;执行循环执行循环RETRET ; ;返回子程序调用处返回子程序调用处COUNT ENDPCOUNT ENDPCSEG ENDSCSEG ENDS END START END START5.3 汇编程序设计的基本方法 n5.3.1 汇编程序设计的一般步骤 n5.3.2 顺序结构程序设计n5.3.3 分支结构程序设计n5.3.4 循环结构程序设计实训5-3 求三个有符号数中的最大数 nSTART: MOV AX, DSEG;将数据段基址装入数据段寄存器n MOV DS, AXn

33、MOV AL, X;将X送入ALn CMP AL, Y;比较X和Y大小n JG F1 ;如果XY,则程序转移至F1n MOV AL, Y;如果XY,将Y送入ALnF1: CMP AL, Z;比较AL中的内容和Z大小n JG F3 ;假设AL)Z,则程序转移至F3nF2: MOV AL, Z;将AL)Z,将Z送入ALnF3: MOV MAX, AL;将最大值AL送入MAXnMOV AH, 4CH;系统功能调用,结束程序返回DOSn INT 21H实训5-4 冒泡排序法nDSEG SEGMENT ;数据段,给变量指定数据,分配存储空间n DATA DW 1, -8, -6, 8, 0n N ($D

34、ATA)/2nDSEG ENDSn MOV CX, N;将外层循环的次数送入将外层循环的次数送入CXn DEC CXn LOP1: LEA SI, DATA ;外层循环外层循环n MOV DX, CX;保存保存CX中的值中的值nLOP2: MOV AX, SI ;内层循环内层循环 n CMP AX, SI+2;比较相邻两个数的大小比较相邻两个数的大小n JGE NEXT;若前面的数大于或相等后面的数,转若前面的数大于或相等后面的数,转移至移至NEXTn XCHG AX, SI+2 ;如前面的数小于后面的数,如前面的数小于后面的数,则两数交换则两数交换n MOV SI, AXnNEXT: ADD

35、 SI, 2;SI增加增加2n DEC CX;修改内层循环参数修改内层循环参数n JNE LOP2 ;判断循环控制条件,是否继续执行判断循环控制条件,是否继续执行内层循环内层循环n MOV CX, DX;将外层循环次数重新送入循将外层循环次数重新送入循环计数器环计数器CXn LOOP LOP1;执行外层循环执行外层循环5.4 高级汇编程序设计 n5.4.1 使用子程序使用子程序BTH PROC FAR PUSHF;将标志寄存器的内容压入堆栈 PUSH AX;将寄存器的内容压入堆栈 PUSH CX MOV CH, 4;将十六进制数位数存入CHCONV:MOV CL, 4;将移位次数存入CL ROL BX, CL;将BX中的数循环左移4位,将最高4位移至最低4位 MOV AL, BL;将BX的低8位存入AL AND AL, 0FH;使AL中保存BX的最低4位 CMP AL, 09H;判断AL是否在09之间 JLE ASC;是在09之间,则程序转移至ASC ADD AL, 37H;AL在AF时,二进制数与ASCII码相差37H JMP EXITASC: ADD AL, 30H ;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论