1、CompanyLOGO电子工业出版社电子工业出版社第三章第三章第三章第三章 80868086汇编语言汇编语言汇编语言汇编语言 主要内容主要内容主要内容主要内容汇编语言源程序格式汇编语言源程序格式1伪指令语句伪指令语句 2 汇编语言程序的调试与运行汇编语言程序的调试与运行33.1 3.1 汇编语言源程序格式汇编语言源程序格式汇编语言源程序格式汇编语言源程序格式 汇编语言程序设计与其它程序设计语言一样,需汇编语言程序设计与其它程序设计语言一样,需要多种系统软件的支持,要经过编辑、汇编、调试之要多种系统软件的支持,要经过编辑、汇编、调试之后才能运行,汇编语言的翻译器(汇编程序)对源程后才能运行,汇编
2、语言的翻译器(汇编程序)对源程序有严格的格式要求,这样,汇编语言格式就是汇编序有严格的格式要求,这样,汇编语言格式就是汇编语言必须遵循的语法规则。语言必须遵循的语法规则。指令语句指令语句指令语句指令语句:对应于对应于对应于对应于CPUCPUCPUCPU指令系统中的一条指令,因此为可指令系统中的一条指令,因此为可指令系统中的一条指令,因此为可指令系统中的一条指令,因此为可 执行语句,汇编时译成目标码。执行语句,汇编时译成目标码。执行语句,汇编时译成目标码。执行语句,汇编时译成目标码。伪指令语句:伪指令语句:伪指令语句:伪指令语句:CPUCPUCPUCPU不执行的语句,只是汇编时给汇编程序不执行的
3、语句,只是汇编时给汇编程序不执行的语句,只是汇编时给汇编程序不执行的语句,只是汇编时给汇编程序 提供汇编信息,并不产生目标代码。提供汇编信息,并不产生目标代码。提供汇编信息,并不产生目标代码。提供汇编信息,并不产生目标代码。宏指令语句:宏指令语句:宏指令语句:宏指令语句:实际上是一个指令序列,汇编时产生对应实际上是一个指令序列,汇编时产生对应实际上是一个指令序列,汇编时产生对应实际上是一个指令序列,汇编时产生对应的目标代码序列。的目标代码序列。的目标代码序列。的目标代码序列。注释语句:注释语句:注释语句:注释语句:以分号以分号以分号以分号“;”启始,只起注释作用,易于理启始,只起注释作用,易于
4、理启始,只起注释作用,易于理启始,只起注释作用,易于理解程序,汇编程序不予处理。解程序,汇编程序不予处理。解程序,汇编程序不予处理。解程序,汇编程序不予处理。空行语句:空行语句:空行语句:空行语句:为保持程序书写清晰,仅包含回车换行符的为保持程序书写清晰,仅包含回车换行符的为保持程序书写清晰,仅包含回车换行符的为保持程序书写清晰,仅包含回车换行符的语句行。语句行。语句行。语句行。【例例3-13-1】汇编语言源程序结构形式汇编语言源程序结构形式 .8086.8086 .model small .model small .data .data .(数据定义伪指令序列)(数据定义伪指令序列).sta
5、ck.stack .(数据定义伪指令序列)(数据定义伪指令序列).code .code assume cs:code,ss:stack,ds:data assume cs:code,ss:stack,ds:data start:mov ax,data start:mov ax,data mov ds,ax mov ds,ax .(核心程序段)(核心程序段)mov ah,4ch mov ah,4ch ;返回操作系统;返回操作系统 int 21hint 21h end start end start 3.2 3.2 伪指令语句伪指令语句伪指令语句伪指令语句3.2.1.程序结构伪指令语句程序结构伪指
6、令语句 1方式选择伪指令方式选择伪指令 2逻辑段定义伪指令逻辑段定义伪指令 3符号符号/数据数据/标号伪指令语句标号伪指令语句 4结构性数据伪指令语句结构性数据伪指令语句3.2.2.3.2.2.过程和宏定义伪指令语句过程和宏定义伪指令语句过程和宏定义伪指令语句过程和宏定义伪指令语句1 1过程定义伪指令过程定义伪指令过程定义伪指令过程定义伪指令格式:格式:格式:格式:过程名过程名过程名过程名 PROC PROC 属性属性属性属性 ;过程开始;过程开始;过程开始;过程开始 ;过程体;过程体;过程体;过程体 RETRET RET RET 过程名过程名过程名过程名 ENDP ENDP ;过程结束;过程
7、结束;过程结束;过程结束【例例例例3-63-6】下面程序段定义了两个过程下面程序段定义了两个过程下面程序段定义了两个过程下面程序段定义了两个过程P1P1和和和和 P2 P2,其中,其中,其中,其中P1P1又调用了又调用了又调用了又调用了P2P2。P1 PROC P1 PROC ;定义过程;定义过程;定义过程;定义过程P1P1 CALL P2 CALL P2 ;过程嵌套;过程嵌套;过程嵌套;过程嵌套 RETRET P1 ENDP P1 ENDP P2 PROC P2 PROC ;定义过程;定义过程;定义过程;定义过程P2P2 RET RET P2 ENDP P2 ENDP 2 2宏定义伪指令宏定
8、义伪指令宏定义伪指令宏定义伪指令 格式:宏名格式:宏名格式:宏名格式:宏名 MACRO MACRO 形式参数表形式参数表形式参数表形式参数表 ;宏体;宏体;宏体;宏体 ENDM ENDM ;宏定义结束;宏定义结束;宏定义结束;宏定义结束 功能:定义一个宏。功能:定义一个宏。功能:定义一个宏。功能:定义一个宏。【例例例例3-73-7】以下程序段定义一个两数相加并将结以下程序段定义一个两数相加并将结以下程序段定义一个两数相加并将结以下程序段定义一个两数相加并将结果送到第三个参数中的宏,并调用它。果送到第三个参数中的宏,并调用它。果送到第三个参数中的宏,并调用它。果送到第三个参数中的宏,并调用它。A
9、DDUP MACRO AD1,AD2,SUMADDUP MACRO AD1,AD2,SUM ;定义一个带定义一个带定义一个带定义一个带33个形参的个形参的个形参的个形参的宏宏宏宏 MOV AX,AD1MOV AX,AD1 MOV AX,AD2 MOV AX,AD2 ADD AX,AD2 ADD AX,AD2 MOV SUM,AX MOV SUM,AX ADDUP BX,24,DX ADDUP BX,24,DX 3 3宏和过程的比较宏和过程的比较宏和过程的比较宏和过程的比较 宏和过程都可用来简化源程序,并可宏和过程都可用来简化源程序,并可宏和过程都可用来简化源程序,并可宏和过程都可用来简化源程序
10、,并可使程序对它们多次进行调用,从而使程序使程序对它们多次进行调用,从而使程序使程序对它们多次进行调用,从而使程序使程序对它们多次进行调用,从而使程序结构简洁清晰,符合结构化程序设计风格。结构简洁清晰,符合结构化程序设计风格。结构简洁清晰,符合结构化程序设计风格。结构简洁清晰,符合结构化程序设计风格。因此,对于那些重复使用的程序模块,既因此,对于那些重复使用的程序模块,既因此,对于那些重复使用的程序模块,既因此,对于那些重复使用的程序模块,既可用过程也可用宏来实现。可用过程也可用宏来实现。可用过程也可用宏来实现。可用过程也可用宏来实现。3.2.3 3.2.3 条件汇编伪指令语言条件汇编伪指令语
11、言条件汇编伪指令语言条件汇编伪指令语言 格式:格式:格式:格式:IFIFIFIF条件条件条件条件 语句序列语句序列语句序列语句序列 ELSEELSEELSEELSE 语句序列语句序列语句序列语句序列2222 ENDIF ENDIF ENDIF ENDIF 功能:当条件为真(满足)时执行汇编语句序列功能:当条件为真(满足)时执行汇编语句序列功能:当条件为真(满足)时执行汇编语句序列功能:当条件为真(满足)时执行汇编语句序列 1 11 1,否则执行汇编语句,否则执行汇编语句,否则执行汇编语句,否则执行汇编语句序列序列22。【例例例例3-83-8】下列程序段将输入及输出字符的下列程序段将输入及输出字
12、符的下列程序段将输入及输出字符的下列程序段将输入及输出字符的DOSDOS功能调用功能调用功能调用功能调用放在一个宏定义中,通过判断参数为放在一个宏定义中,通过判断参数为放在一个宏定义中,通过判断参数为放在一个宏定义中,通过判断参数为00还是非还是非还是非还是非00值来选择是执行值来选择是执行值来选择是执行值来选择是执行汇编输入还是输出。汇编输入还是输出。汇编输入还是输出。汇编输入还是输出。INOUTINOUTMACRO XMACRO X IF XIF X MOV AH,2MOV AH,2 INT 21HINT 21H;输出输出输出输出DLDL中的字符中的字符中的字符中的字符 ELSEELSE
13、MOV AH,1MOV AH,1 INT 21HINT 21H;输入一个字符到输入一个字符到输入一个字符到输入一个字符到ALAL ENDIFENDIF ENDMENDM3.3 3.3 汇编语言程序的调试与运行汇编语言程序的调试与运行汇编语言程序的调试与运行汇编语言程序的调试与运行3.3.1 3.3.1 上机调试过程上机调试过程上机调试过程上机调试过程 1.1.编辑汇编源程序编辑汇编源程序编辑汇编源程序编辑汇编源程序2.2.用用用用MASMMASM汇编汇编汇编汇编3.3.目标文件的连接目标文件的连接目标文件的连接目标文件的连接 4.4.程序调试程序调试程序调试程序调试 3.3.2 3.3.2 3
14、.3.2 3.3.2 常用常用常用常用DEBUGDEBUGDEBUGDEBUG命令命令命令命令DEBUGDEBUGDEBUGDEBUG是是是是DOSDOSDOSDOS的一个外部命令,的一个外部命令,的一个外部命令,的一个外部命令,其命令格式为:其命令格式为:其命令格式为:其命令格式为:pathDEBUG filename parm1 parm2pathDEBUG filename parm1 parm2pathDEBUG filename parm1 parm2pathDEBUG filename parm1 parm2pathpathpathpath是是是是DEBUGDEBUGDEBUGDEBUG命令在磁盘上的路径命令在磁盘上的路径命令在磁盘上的路径命令在磁盘上的路径