DAI DB' This is a sample progran,i数据段 DATA SEGMENT DB ODH,OAH, 'S 回车和换行符以及结束符 DATA ENDS STACK SEGMENT ;堆栈段 STI DB 100 DUP() STACK ENDS CODE SEGMENT ;代码段 MAIN PROC FAR ASSUME CS:CODE,DS:DATA, SS: STACK;段分配 START:MOⅤAX, STACK ;送堆栈段地址 MOV SS.AX PUSH DS ;返回DOS MOVAX,O PUSHAX MOVAXDATA 送数据段地址 MOV DS.AX MOVAH.9 ;DOS9号功能调用,显示字符串 MOV DXOFFSET DAI INT 21H RET MAIN ENDP CODE ENDS END START
DATA SEGMENT ;数据段 DA1 DB 'This is a sample program.' DB 0DH,0AH,‘$‘ ;回车和换行符以及结束符 DATA ENDS STACK SEGMENT ;堆栈段 ST1 DB 100 DUP(?) STACK ENDS CODE SEGMENT ;代码段 MAIN PROC FAR ASSUME CS:CODE,DS:DATA,SS:STACK ;段分配 START: MOV AX,STACK ;送堆栈段地址 MOV SS,AX PUSH DS ;返回DOS MOV AX,0 PUSH AX MOV AX,DATA ;送数据段地址 MOV DS,AX MOV AH,9 ;DOS 9号功能调用,显示字符串 MOV DX,OFFSET DA1 INT 21H RET MAIN ENDP CODE ENDS END START
第四章汇编语言程序设计 汇编语言:利用指令助记符、符号地址、标号来编写的计算机语 言。是机器语言的符号表示,是面向机器的语言,是较低级的语 利用汇编语言编写的程序称为源程序,需要通过汇编程序翻 译成二进制代码的目标程序,再经过与库文件的连接,最后得到 可执行文件程序,才能在机器上直接运行。 41汇编语言程序格式 4.1.1.汇编语言的格式 1.指令性语句 指令性语句是指汇编程序可将其汇编成目标代码,能被机器 执行的语句
第四章 汇编语言程序设计 汇编语言:利用指令助记符、符号地址、标号来编写的计算机语 言。是机器语言的符号表示,是面向机器的语言,是较低级的语 言。 利用汇编语言编写的程序称为源程序,需要通过汇编程序翻 译成二进制代码的目标程序,再经过与库文件的连接,最后得到 可执行文件程序,才能在机器上直接运行。 4.1 汇编语言程序格式 4.1.1.汇编语言的格式 1. 指令性语句 指令性语句是指汇编程序可将其汇编成目标代码,能被机器 执行的语句
格式如下: 标号:]指令助记符[操作数;注解] 其中:用方括号括起来的部分,可以有也可以没有,是可选项。 每部分之间用空格(至少一个)分开,一行最多可有132个字符。 标号:是给指令或某一存储单元地址所起的名字。可由字母:A Z;数字:0~9;特殊字符:?、·、@、一、S等字符组成。 数字不能作标识符的第一个字符,而圆点仅能用作第一个字符 标识符最长为31个字符。当标识符后跟冒号时,表示是标号。 它代表该行指令的起始地址;当标识符后不带冒号时,表示变 量;伪指令前的标识符不加冒号。 指令助记符:表示不同操作的指令,可以是8086的指令助记符, 也可以是伪指令。 操作数:是指令执行的对象。根据指令的要求,可能有一个 两个或者没有,如果一条指令有多个操作数,则操作数之间必 须用“,”分隔
格式如下: [标号:] 指令助记符 [操作数][;注解] 其中:用方括号括起来的部分,可以有也可以没有,是可选项。 每部分之间用空格(至少一个)分开,一行最多可有132个字符。 标号:是给指令或某一存储单元地址所起的名字。可由字母:A ~ z ; 数字:0 ~ 9 ; 特殊字符:?、·、@、—、$等字符组成。 数字不能作标识符的第一个字符,而圆点仅能用作第一个字符。 标识符最长为31个字符。当标识符后跟冒号时,表示是标号。 它代表该行指令的起始地址;当标识符后不带冒号时,表示变 量;伪指令前的标识符不加冒号。 指令助记符:表示不同操作的指令,可以是8086的指令助记符, 也可以是伪指令。 操作数:是指令执行的对象。根据指令的要求,可能有一个、 两个或者没有,如果一条指令有多个操作数,则操作数之间必 须用“ , ”分隔
例如:RET;无操作数 COUNT: INC CX;一个操作数 如果是伪指令,则可能有多个操作数,例如: COST DB3,4,5,6,7;5个操作数 MOV AX,[BP十4;第二个操作数为表达式 注释:该项是可选项,可有可无,是为源程序所加的注解,用于提 高程序的可读性。注释前必须用分号。 2.伪指令语句 伪指令用于对汇编程序进行控制,它不像机器指令(指令性语 句)那样是在程序运行期间由计算机来执行的,它是在汇编程序对 源程序汇编期间由汇编程序处理的操作,可以完成如数据定义、分 配存储区、指示程序结束等功能。其格式和汇编指令一样,但一般 不产生目的代码,即不直接命令CPU去执行什么操作。 格式:名字伪指令指示符操作数[,操作数][;注释]
例如:RET ;无操作数 COUNT:INC CX ;一个操作数 如果是伪指令,则可能有多个操作数,例如: COST DB 3,4,5,6,7 ;5个操作数 MOV AX,[BP十4] ;第二个操作数为表达式 注释:该项是可选项,可有可无,是为源程序所加的注解,用于提 高程序的可读性。注释前必须用分号。 2. 伪指令语句 伪指令用于对汇编程序进行控制,它不像机器指令(指令性语 句)那样是在程序运行期间由计算机来执行的,它是在汇编程序对 源程序汇编期间由汇编程序处理的操作,可以完成如数据定义、分 配存储区、指示程序结束等功能。其格式和汇编指令一样,但一般 不产生目的代码,即不直接命令CPU去执行什么操作。 格式: 名字 伪指令指示符 操作数[,操作数] [;注释]
名字:是给伪指令取的名称,它用符号地址表示,名字后不允 许带冒号”:”,名字可以省略,伪指令中名字通常是变量名、 段名、过程名、符号名等 伪指令指示符:是汇编程序MASM规定的符号,常用的有变量 定义语句 OBDW),符号定义语句(EQU=),段定义语句 ( SEGMENT…ENDS),段分配语句( ASSUME),结构定义语句 ( STURO,ENDS),过程定义语句(PROC…ENDP)等。 操作数:是由伪指令具体要求的,有的伪指令不允许带操作数, 有的伪指令要求带多个操作数,多个操作数之间必须用逗号隔 开。操作数可以是常数、变量、字符串、表达式等 注释的功能和使用与指令性语句相同
名字:是给伪指令取的名称,它用符号地址表示,名字后不允 许带冒号”:”,名字可以省略,伪指令中名字通常是变量名、 段名、过程名、符号名等。 伪指令指示符:是汇编程序MASM规定的符号,常用的有变量 定义语句(DB DW),符号定义语句(EQU =),段定义语句 (SEGMENT …ENDS),段分配语句(ASSUME),结构定义语句 (STURC …ENDS),过程定义语句(PROC …ENDP)等。 操作数:是由伪指令具体要求的,有的伪指令不允许带操作数, 有的伪指令要求带多个操作数,多个操作数之间必须用逗号隔 开。操作数可以是常数、变量、字符串、表达式等。 注释的功能和使用与指令性语句相同