《《汇编语言格式》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《汇编语言格式》PPT课件.ppt(151页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、现代微机原理与接口技术现代微机原理与接口技术11.3 汇编语言格式汇编语言格式n汇编语言源程序结构汇编语言源程序结构n汇编语言上机过程汇编语言上机过程n汇编语言语句格式汇编语言语句格式n伪操作(伪指令)伪操作(伪指令)2/6/20231现代微机原理与接口技术现代微机原理与接口技术 数据段数据段 说明:说明:堆栈段堆栈段 1、各段顺序无关、各段顺序无关 2、除代码段外,可缺省、除代码段外,可缺省 3、可有若干个数据段,、可有若干个数据段,若干代码段若干代码段 代码段代码段 END 标号标号 附加段附加段11.3.1 源程序结构概览源程序结构概览2/6/20232现代微机原理与接口技术现代微机原理
2、与接口技术汇编语言程序例汇编语言程序例DATA SEGMENTDATA SEGMENT BUF1 DB 34H BUF1 DB 34H BUF2 DB 2AH BUF2 DB 2AH SUM DB?SUM DB?DATA ENDSDATA ENDSCODE SEGMENTCODE SEGMENT ASSUME CS:CODE,DS:DATA ASSUME CS:CODE,DS:DATA START:MOV AX,DATASTART:MOV AX,DATA MOV DS,AX MOV DS,AX MOV AL,BUF1 MOV AL,BUF1 ADD AL,BUF2 ADD AL,BUF2 MO
3、V SUM,AL MOV SUM,AL MOV AH,4CH MOV AH,4CH INT 21H INT 21HCODE ENDSCODE ENDS END START END START2/6/20233现代微机原理与接口技术现代微机原理与接口技术11.3.2 汇编语言源程序上机过程汇编语言源程序上机过程源程序源程序.asm汇编汇编masm目标程序目标程序 .obj连接连接link结果结果debugDOS下执行下执行执行执行可执行程序可执行程序 .exe2/6/20234现代微机原理与接口技术现代微机原理与接口技术有三类语句:有三类语句:指令语句指令语句指令语句指令语句完成操作功能,能翻译
4、成机器代码完成操作功能,能翻译成机器代码伪指令语句伪指令语句伪指令语句伪指令语句为汇编程序在翻译源程序时提供为汇编程序在翻译源程序时提供 有关信息有关信息 宏指令语句宏指令语句宏指令语句宏指令语句由若干条指令语句组成的语句由若干条指令语句组成的语句通用语句格式:通用语句格式:通用语句格式:通用语句格式:名字名字名字名字 操作项操作项操作项操作项 操作数操作数操作数操作数 ;注释;注释;注释;注释 11.3.3 汇编语言语句格式汇编语言语句格式2/6/20235现代微机原理与接口技术现代微机原理与接口技术指令语句格式指令语句格式 标号标号标号标号:指令助记符指令助记符指令助记符指令助记符 目的操
5、作数目的操作数目的操作数目的操作数,源操作数源操作数源操作数源操作数;注注注注释释释释 其中其中,表示可选项表示可选项;1、标号标号标号标号 标号是后续指令的符号名称,可用符号是:标号是后续指令的符号名称,可用符号是:字母:字母:A-Z,a-z 数字符:数字符:0-9 专用字符:专用字符:?,_,$标号长度不超过标号长度不超过31个字符个字符2、指令助记符指令助记符指令助记符指令助记符 指令助记符是汇编指令的符号代码,不可缺省。指令助记符是汇编指令的符号代码,不可缺省。汇编源程序时汇编源程序时,系统使用内部对照表将每条指令的系统使用内部对照表将每条指令的助记符译成相应的机器码。助记符译成相应的
6、机器码。2/6/20236现代微机原理与接口技术现代微机原理与接口技术3、目的操作数目的操作数目的操作数目的操作数 1)参与指令操作)参与指令操作 2)暂存操作结果)暂存操作结果 除立即寻址方式外,其他寻址方式均适用于目的操作数除立即寻址方式外,其他寻址方式均适用于目的操作数.4、源操作数源操作数源操作数源操作数 提供原始数据或操作对象,面向所有寻址方式提供原始数据或操作对象,面向所有寻址方式5、注释注释注释注释 注释在系统汇编时并不产生机器码注释在系统汇编时并不产生机器码 注释可以放在指令语句尾,也可单独使用注释可以放在指令语句尾,也可单独使用 注释前面的注释前面的“;”不可缺少不可缺少 2
7、/6/20237现代微机原理与接口技术现代微机原理与接口技术常量常量常量有两种:常量有两种:1、数值常量数值常量数值常量数值常量 二进制数二进制数 以以B结尾,如结尾,如01011101B 八进制数八进制数 以以Q结尾,如结尾,如235Q 十进制数十进制数 以以D结尾或没有结尾字母,如结尾或没有结尾字母,如98D或或98 十六进制数十六进制数 以以H结尾,如结尾,如5BH2、字符串常量字符串常量字符串常量字符串常量 用单引号括起来的一个或多个字符,如用单引号括起来的一个或多个字符,如A、AB 字符用字符用ASCII码形式存储码形式存储常量的应用常量的应用常量的应用常量的应用:(1)在指令语句中
8、作立即数在指令语句中作立即数 MOV CX,100100(2)在指令语句中作位移量在指令语句中作位移量 MOV AX,3434SI(3)在数据定义语句中作初值在数据定义语句中作初值 X DB 12H,34H12H,34H2/6/20238现代微机原理与接口技术现代微机原理与接口技术变量和标号变量和标号变量变量变量变量有三种属性:有三种属性:1、段属性段属性段属性段属性变量所在段的起始地址变量所在段的起始地址2、偏移属性偏移属性偏移属性偏移属性从段起始地址到定义变量的位置之从段起始地址到定义变量的位置之间的字节数间的字节数3、类型属性类型属性类型属性类型属性该变量所保留的字节数该变量所保留的字节
9、数 DB 1个字节个字节 DW 2 个字节个字节 DD 4个字节个字节 DQ 8个字节个字节 DT 10个字节个字节2/6/20239现代微机原理与接口技术现代微机原理与接口技术标号标号标号标号也有三种属性:也有三种属性:1、段属性段属性段属性段属性定义标号所在段的起始地址定义标号所在段的起始地址2、偏移属性偏移属性偏移属性偏移属性从段起始地址到定义标号的位置之从段起始地址到定义标号的位置之间的字节数间的字节数3、类型属性类型属性类型属性类型属性表示它的转移特性表示它的转移特性 NEAR(近)(近)段内转移段内转移 FAR (远)(远)段间转移段间转移2/6/202310现代微机原理与接口技术
10、现代微机原理与接口技术 处理器选择伪指令处理器选择伪指令 数据定义和存储器分配伪指令数据定义和存储器分配伪指令 段定义伪指令段定义伪指令 程序开始和结束伪指令程序开始和结束伪指令 表达式赋值伪指令表达式赋值伪指令 地址计数器与对准伪指令地址计数器与对准伪指令 基数控制伪指令基数控制伪指令11.3.4 伪指令伪指令2/6/202311现代微机原理与接口技术现代微机原理与接口技术(一)处理器选择伪指令(一)处理器选择伪指令.8086 .8086 选择选择选择选择80868086指令系统(一般不用写)指令系统(一般不用写)指令系统(一般不用写)指令系统(一般不用写).286 .286 选择选择选择选
11、择8028680286指令系统指令系统指令系统指令系统.286P .286P 选择保护方式下的选择保护方式下的选择保护方式下的选择保护方式下的8028680286指令系统指令系统指令系统指令系统.386 .386 选择选择选择选择8038680386指令系统指令系统指令系统指令系统.386P .386P 选择保护方式下的选择保护方式下的选择保护方式下的选择保护方式下的8038680386指令系统指令系统指令系统指令系统.486 .486 选择选择选择选择8048680486指令系统指令系统指令系统指令系统.486P .486P 选择保护方式下的选择保护方式下的选择保护方式下的选择保护方式下的8
12、048680486指令系统指令系统指令系统指令系统.586 .586 选择选择选择选择PentiumPentium指令系统指令系统指令系统指令系统.586P .586P 选择保护方式下选择保护方式下选择保护方式下选择保护方式下PentiumPentium的指令系统的指令系统的指令系统的指令系统当源程序使用了当源程序使用了286及以上的机型新增加的指令时,及以上的机型新增加的指令时,应该在程序开始使用相应的处理器选择伪指令。应该在程序开始使用相应的处理器选择伪指令。2/6/202312现代微机原理与接口技术现代微机原理与接口技术(二)数据定义伪指令(二)数据定义伪指令格式:格式:格式:格式:变量
13、名变量名变量名变量名 定义符定义符定义符定义符 操作数项表操作数项表操作数项表操作数项表操作:为变量分配存储单元并将初值置入相应单元中操作:为变量分配存储单元并将初值置入相应单元中操作:为变量分配存储单元并将初值置入相应单元中操作:为变量分配存储单元并将初值置入相应单元中操作数项表可为:操作数项表可为:1 1、常数或表达式、常数或表达式、常数或表达式、常数或表达式 2 2、字符串、字符串、字符串、字符串 3 3、?表达式、?表达式、?表达式、?表达式 4 4、带、带、带、带DUP DUP 的表达式的表达式的表达式的表达式定义符可为:定义符可为:DB 定义字节定义字节 DW 定义字(定义字(2个
14、字节)个字节)DD定义双字(定义双字(4个字节)个字节)DF定义六字节定义六字节 DQ定义八字节定义八字节 DT定义十字节定义十字节2/6/202313现代微机原理与接口技术现代微机原理与接口技术操作数是常数或表达式操作数是常数或表达式操作数是常数或表达式操作数是常数或表达式 X1 DB 40H ;为;为X1分配分配1个字节,初值个字节,初值40H X2 DW 250*250;为;为X2分配分配2个字节,初值个字节,初值62500 X3 DD 10203040H ;为;为X3分配分配4个字节,初值为个字节,初值为10203040H X4 DQ(120+50)/10;为;为X4分配分配8个字节,
15、初值个字节,初值17 X5 DB 10,20,30 ;多项定义,;多项定义,X5被分配被分配3个字节,个字节,初值分别为初值分别为10,20,30,地址,地址从低到高,各个值间用逗号分从低到高,各个值间用逗号分开开 2/6/202314现代微机原理与接口技术现代微机原理与接口技术操作数为字符串操作数为字符串操作数为字符串操作数为字符串 STRING1 DB HELLO STRING2 DB H,E,L,L,O 字符串用字符串用字符串用字符串用DBDB定义,被定义串以单引号括起来定义,被定义串以单引号括起来定义,被定义串以单引号括起来定义,被定义串以单引号括起来 串中可包含数字符、大小写英文字母
16、、回车符、串中可包含数字符、大小写英文字母、回车符、换换行符、行符、空格、?、空格、?、$、下划线、下划线_等等 字符串以字符串以ASCII码形式存储在存储单元中。码形式存储在存储单元中。STRING1 H STRING1 H +1 E +1 E +2 L +2 L +3 L +3 L +4 O +4 O2/6/202315现代微机原理与接口技术现代微机原理与接口技术区分区分区分区分 S1 DB AB S1 DB AB 与与与与 S2 DW AB S2 DW AB 它们的存储情况为:它们的存储情况为:S1 S2 A B B A操作数项为操作数项为操作数项为操作数项为?用于预留空间,不置初值用于
17、预留空间,不置初值 Y1 DB 20H,?;定义;定义2个字节,其中预留个字节,其中预留1个字节个字节 Y2 DW?,?;预留;预留2个字个字 Y3 DD?;预留;预留4个字节个字节 Y4 DQ?;预留;预留8个字节个字节 Y5 DT?;预留;预留10个字节个字节2/6/202316现代微机原理与接口技术现代微机原理与接口技术操作数项带重复定义符操作数项带重复定义符操作数项带重复定义符操作数项带重复定义符DUPDUP 格式:格式:N DUPN DUP(操作数项表)(操作数项表)(操作数项表)(操作数项表)操作:以操作:以N所示次数定义操作数项表内容所示次数定义操作数项表内容 VAR1 DW 2
18、 DUP(2,4),1476H VAR2 DB 2 DUP(?,2 DUP(A,B)存储情况为:存储情况为:VAR1 02H VAR2?00H A 04H B 00H A 02H B 00H?04H A 00H B 76H A 14H B2/6/202317现代微机原理与接口技术现代微机原理与接口技术操作数运算符操作数运算符n算术运算符算术运算符n逻辑运算符逻辑运算符n关系运算符关系运算符n数值回送运算符数值回送运算符n属性运算符属性运算符n运算符优先级运算符优先级2/6/202318现代微机原理与接口技术现代微机原理与接口技术 算术运算符算术运算符算术运算符算术运算符(单目单目单目单目+,+
19、,单目单目单目单目-,+,-,*,/,MOD)-,+,-,*,/,MOD)运算符运算符 格格 式式 运运 算算 +表达式表达式 取表达式正值取表达式正值 -表达式表达式 取表达式负值取表达式负值 +表达式表达式1+表达式表达式2 求表达式求表达式1、表达式、表达式2之和之和 -表达式表达式1-表达式表达式2 求表达式求表达式1、表达式、表达式2之差之差 *表达式表达式1*表达式表达式2 表达式表达式1、表达式、表达式2之积之积 /表达式表达式1/表达式表达式2 表达式表达式1、表达式、表达式2之商之商 MOD 表达式表达式1 MOD 表达式表达式2 取余数取余数 说明:说明:1、算术运算符可用
20、于数值表达式或地址表达式、算术运算符可用于数值表达式或地址表达式2、用于地址表达式时,只有其结果有物理意义时才有效、用于地址表达式时,只有其结果有物理意义时才有效 常用的是:常用的是:地址地址地址地址+数字常量数字常量数字常量数字常量 地址地址地址地址-数字常量数字常量数字常量数字常量2/6/202319现代微机原理与接口技术现代微机原理与接口技术算术运算符示例算术运算符示例(1)MOV AL,20+30 ;50-AL MOV BH,100-2 ;98-BH MOV CX,50/2 ;25-CX MOV AL,80 MOD 15 ;5-AL(3)设数据定义如下:设数据定义如下:ARRAYA D
21、W 1,2,3,4,5,6,7 WENDA DW?将数组长度(字数)存入将数组长度(字数)存入CX:MOV CX,(WENDA-ARRAYA)/2 ;地址地址地址地址-地址,结果为一常量地址,结果为一常量地址,结果为一常量地址,结果为一常量(2)将首地址为将首地址为BLOCK的字数组的第的字数组的第6个字传送到个字传送到DX:MOV DX,BLOCK+(6-1)*2 ;地址地址地址地址+常量,结果仍为一地址值常量,结果仍为一地址值常量,结果仍为一地址值常量,结果仍为一地址值2/6/202320现代微机原理与接口技术现代微机原理与接口技术 逻辑运算符逻辑运算符逻辑运算符逻辑运算符(NOT,AND
22、,OR,XOR)(NOT,AND,OR,XOR)运算符运算符 格格 式式 运运 算算 NOT NOT 表达式表达式 按位取反按位取反 AND 表达式表达式1 AND 表达式表达式2 按位按位“与与”运算运算 OR 表达式表达式1 OR 表达式表达式2 按位按位“或或”运算运算 XOR 表达式表达式1 XOR 表达式表达式2 按位按位“异或异或”运算运算 逻辑运算符和逻辑运算指令的区别:逻辑运算符和逻辑运算指令的区别:逻辑运算符和逻辑运算指令的区别:逻辑运算符和逻辑运算指令的区别:逻辑运算指令逻辑运算指令 逻辑运算符逻辑运算符出现在语句的位置出现在语句的位置 指令助记符指令助记符 操作数字段操作
23、数字段操作对象操作对象 可以是寄存器或可以是寄存器或 只能是整型常数只能是整型常数 存储器操作数存储器操作数何时计算何时计算 程序运行时程序运行时 源程序汇编时源程序汇编时2/6/202321现代微机原理与接口技术现代微机原理与接口技术关系运算符关系运算符关系运算符关系运算符(EQ,NE,LT,LE,GT,GE)(EQ,NE,LT,LE,GT,GE)运算符运算符 格格 式式 运运 算算 EQ 表达式表达式1 EQ 表达式表达式2 表达式表达式1=表达式表达式2为真为真 NE 表达式表达式1 NE 表达式表达式2 表达式表达式1表达式表达式2为真为真 LT 表达式表达式1 LT 表达式表达式2
24、表达式表达式1表达式表达式2为真为真 LE 表达式表达式1 LE 表达式表达式2 表达式表达式1表达式表达式2为真为真 GE 表达式表达式1 GE 表达式表达式2 表达式表达式1=表达式表达式2为真为真 关系运算符的两个操作数必须都是常量或同一段内的关系运算符的两个操作数必须都是常量或同一段内的符号地址,比较结果为逻辑值:符号地址,比较结果为逻辑值:如果关系成立,则返如果关系成立,则返如果关系成立,则返如果关系成立,则返回回回回0FFFFH(0FFFFH(真真真真);否则,返回;否则,返回;否则,返回;否则,返回0(0(假假假假)。2/6/202322现代微机原理与接口技术现代微机原理与接口技
25、术逻辑运算符示例逻辑运算符示例 MOV AH,NOTNOT 0F0H 0F0H ;0FH-AH MOV BL,40H 40H OROR 0B4H 0B4H ;0F4H-BL XOR BL,55H 55H XOR XOR 48H 48H ;XOR BL,1DH AND CH,50H 50H AND AND 30H 30H ;AND CH,10H关系运算符示例关系运算符示例 N1 EQU 10 N2 EQU 20 .MOV BX,N1N1 EQ EQ N2 N2 ;0-BX MOV CX,N1N1 NE NE N2 N2 ;0FFFFH-CX MOV AX,N1 N1 LTLT N2 N2 ;0F
26、FFFH-AX MOV DI,N1 N1 GEGE N2 N2 ;0-DI2/6/202323现代微机原理与接口技术现代微机原理与接口技术数值回送运算符数值回送运算符数值回送运算符数值回送运算符 (SEG,OFFSET,TYPE,LENGTH,SIZE)(SEG,OFFSET,TYPE,LENGTH,SIZE)数值回送运算符对变量或标号进行分析,数值回送运算符对变量或标号进行分析,回送其地址属性值或变量特征值。回送其地址属性值或变量特征值。(1)地址回送运算符地址回送运算符地址回送运算符地址回送运算符 符号符号 作用对象作用对象 操操 作作 SEG 变量或标号变量或标号 返回其所在段的段基址值
27、返回其所在段的段基址值OFFSET 变量或标号变量或标号 返回其在段内的偏移量返回其在段内的偏移量 2/6/202324现代微机原理与接口技术现代微机原理与接口技术(2)符号特征回送运算符符号特征回送运算符符号特征回送运算符符号特征回送运算符 符号符号 作用对象作用对象 操操 作作 TYPE 变量或标号变量或标号 用数字表示其类型属性用数字表示其类型属性 LENGTH 变量变量 用用DUP重复定义符定义的变量重复定义符定义的变量 ,返回分配的元素个数;其他,返回分配的元素个数;其他 形式,则返回形式,则返回1 SIZE 变量变量 回送回送LENGTH*TYPE之积之积 2/6/202325现代
28、微机原理与接口技术现代微机原理与接口技术TYPE TYPE 运算符运算符运算符运算符 类型属性类型属性 运算结果运算结果变量变量 DB 1 DW 2 DD 4 DQ 8 DT 10标号标号 NEAR -1 FAR -22/6/202326现代微机原理与接口技术现代微机原理与接口技术数值回送运算符示例数值回送运算符示例 D_SEG SEGMENT NUM1 DB 10 DUP(10);数据定义;数据定义 NUM2 DB 10H,20H,50H NUM3 DW 20 DUP(0,4 DUP(2)NUM4 DB STRING D_SEG ENDS MOV CL,SIZESIZE NUM4 ;1*1-
29、CL MOV CH,SIZESIZE NUM3 ;20*2-CHMOV AH,TYPETYPE NUM3 ;2-AHMOV BH,LENGTHLENGTH NUM3 ;20-BH(最外层)(最外层)MOV SI,OFFSETOFFSET NUM1 ;NUM1的偏移量的偏移量-SIMOV DI,OFFSETOFFSET NUM2 ;NUM2的偏移量的偏移量-DIMOV AX,SEGSEG NUM1MOV BX,SEGSEG NUM2;NUM2与与NUM1段基址值相同段基址值相同2/6/202327现代微机原理与接口技术现代微机原理与接口技术 属性运算符属性运算符属性运算符属性运算符 (PTR,S
30、HORT)(PTR,SHORT)SHORTSHORT格式:格式:格式:格式:JMP SHORT JMP SHORT 标号标号标号标号 操作:操作:操作:操作:转移的距离属性为短,即转移范围为转移的距离属性为短,即转移范围为转移的距离属性为短,即转移范围为转移的距离属性为短,即转移范围为-128+127128+127字节字节字节字节 PTRPTR格式:格式:格式:格式:类型类型类型类型 PTR PTR 表达式表达式表达式表达式 操作:操作:操作:操作:对存储器表达式,类型可为对存储器表达式,类型可为对存储器表达式,类型可为对存储器表达式,类型可为BYTE,WORD,DWORD,QWORDBYTE
31、,WORD,DWORD,QWORD和和和和TBYTETBYTE;表达式为标号时,类型可为表达式为标号时,类型可为表达式为标号时,类型可为表达式为标号时,类型可为NEARNEAR或或或或FARFAR。该运算符显式指定表达式的类型该运算符显式指定表达式的类型该运算符显式指定表达式的类型该运算符显式指定表达式的类型2/6/202328现代微机原理与接口技术现代微机原理与接口技术PTR 运算符示例运算符示例(1)DATA1DB 10H,20H,30H DATA2DW 4023H,1A00H ;数据定义;数据定义 .MOV AX,WORD PTRWORD PTR DATA1 ;(AX)-2010H MO
32、V BL,BYTE PTRBYTE PTR DATA2 ;(BL)DS-DS MOV AX,E_SEG MOV AX,E_SEG MOV ES,AX MOV ES,AX ;附加段基址;附加段基址;附加段基址;附加段基址-ES-ES2/6/202339现代微机原理与接口技术现代微机原理与接口技术3 3)存储模型与简化段定义伪指令)存储模型与简化段定义伪指令)存储模型与简化段定义伪指令)存储模型与简化段定义伪指令1 1、模式选择伪指令、模式选择伪指令、模式选择伪指令、模式选择伪指令MODELMODEL格式:格式:格式:格式:.MODEL.MODEL 模式选择符模式选择符模式选择符模式选择符功能:指
33、明简化段所用内存模式功能:指明简化段所用内存模式功能:指明简化段所用内存模式功能:指明简化段所用内存模式v TinyTiny模式(微模式)模式(微模式)模式(微模式)模式(微模式):所有数据和代码放入同一物理段内,:所有数据和代码放入同一物理段内,可写成可写成.COM文件形式文件形式v SmallSmall模式(小模式)模式(小模式)模式(小模式)模式(小模式):所有数据放在一个:所有数据放在一个64KB的段,的段,所有代码放在一个所有代码放在一个64KB的段的段v MediumMedium模式(中模式)模式(中模式)模式(中模式)模式(中模式):所有数据放在一个:所有数据放在一个64KB的段
34、,的段,代码可放在多个段代码可放在多个段v CompactCompact模式模式模式模式(压缩模式)(压缩模式)(压缩模式)(压缩模式):所有代码放在一个:所有代码放在一个64KB的段,的段,数据可放在多个段数据可放在多个段v LargeLarge模式(大模式)模式(大模式)模式(大模式)模式(大模式):代码和数据都可用多个段:代码和数据都可用多个段v HugeHuge:与:与Large相同,但数据段大小可超过相同,但数据段大小可超过64KBv FlatFlat:允许用户用允许用户用32位偏移量位偏移量2/6/202340现代微机原理与接口技术现代微机原理与接口技术2 2、简化的段定义伪指令、
35、简化的段定义伪指令、简化的段定义伪指令、简化的段定义伪指令数据段定义伪指令数据段定义伪指令数据段定义伪指令数据段定义伪指令格式:格式:格式:格式:.DATA.DATA 名字名字名字名字 功能:定义数据段,若有多个数据段,用名字区别。功能:定义数据段,若有多个数据段,用名字区别。功能:定义数据段,若有多个数据段,用名字区别。功能:定义数据段,若有多个数据段,用名字区别。只有一个数据段时,段名为只有一个数据段时,段名为只有一个数据段时,段名为只有一个数据段时,段名为DATADATA栈段定义伪指令栈段定义伪指令栈段定义伪指令栈段定义伪指令格式:格式:格式:格式:.STACK.STACK 名字名字名字
36、名字 功能:定义一个栈段,并形成功能:定义一个栈段,并形成功能:定义一个栈段,并形成功能:定义一个栈段,并形成SSSS及及及及SPSP的初值,的初值,的初值,的初值,SPSP的默的默的默的默认值为认值为认值为认值为10241024,隐含段名为,隐含段名为,隐含段名为,隐含段名为STACKSTACK代码段定义伪指令代码段定义伪指令代码段定义伪指令代码段定义伪指令格式:格式:格式:格式:.CODE.CODE 名字名字名字名字 功能:定义代码段,若有多个代码段,用名字区别。功能:定义代码段,若有多个代码段,用名字区别。功能:定义代码段,若有多个代码段,用名字区别。功能:定义代码段,若有多个代码段,用
37、名字区别。只有一个代码段时,段名为只有一个代码段时,段名为只有一个代码段时,段名为只有一个代码段时,段名为CODECODE2/6/202341现代微机原理与接口技术现代微机原理与接口技术简化段定义示例简化段定义示例 .MODEL SMALL .MODEL SMALL .STACK 100H .STACK 100H .DATA .DATA .CODE .CODESTART:START:MOV AX,DATA MOV AX,DATA MOV DS,AX MOV DS,AX MOV AX,4C00H MOV AX,4C00H INT 21H INT 21HEND STARTEND START2/6/
38、202342现代微机原理与接口技术现代微机原理与接口技术 (四)程序开始和结束伪指令(四)程序开始和结束伪指令 1 1)程序开始伪指令)程序开始伪指令)程序开始伪指令)程序开始伪指令 格式格式格式格式1 1:NAME NAME 模块名模块名模块名模块名 操作操作操作操作1 1:用此名作为模块名用此名作为模块名用此名作为模块名用此名作为模块名 如缺省则以模块的源程序文件名为模块名如缺省则以模块的源程序文件名为模块名如缺省则以模块的源程序文件名为模块名如缺省则以模块的源程序文件名为模块名模块命名伪指令示例模块命名伪指令示例 NAME MODE1 NAME MODE2 TITLE EXAM 格式格式
39、格式格式2 2:TITLE TITLE 文本文本文本文本操作操作操作操作2 2:没有:没有:没有:没有NAMENAME时,用其前时,用其前时,用其前时,用其前6 6个字符作为模块名个字符作为模块名个字符作为模块名个字符作为模块名 可在列表文件中打印标题可在列表文件中打印标题可在列表文件中打印标题可在列表文件中打印标题 2/6/202343现代微机原理与接口技术现代微机原理与接口技术2 2)源程序结束控制伪指令)源程序结束控制伪指令)源程序结束控制伪指令)源程序结束控制伪指令 格式格式格式格式1 1:END END 格式格式格式格式2 2:END END 符号地址符号地址符号地址符号地址 功能:
40、告诉汇编程序,源程序到此结束,并将符号地址功能:告诉汇编程序,源程序到此结束,并将符号地址功能:告诉汇编程序,源程序到此结束,并将符号地址功能:告诉汇编程序,源程序到此结束,并将符号地址 所示单元的段基址和偏移量自动装入所示单元的段基址和偏移量自动装入所示单元的段基址和偏移量自动装入所示单元的段基址和偏移量自动装入CSCS和和和和IPIP中中中中 源程序结束控制伪指令示例源程序结束控制伪指令示例 C_SEG SEGMENT PARA CODE ASSUME CS:C_SEG,.START:.C_SEG ENDS END STARTEND START 说明:说明:源程序从标号源程序从标号STAR
41、T处开始执行处开始执行 2/6/202344现代微机原理与接口技术现代微机原理与接口技术(五)表达式赋值伪指令(五)表达式赋值伪指令(EQU,=)格式:名字格式:名字格式:名字格式:名字 EQU EQU 表达式表达式表达式表达式 名字名字名字名字=表达式表达式表达式表达式 操作:为表达式取一个名字,供以后引用操作:为表达式取一个名字,供以后引用操作:为表达式取一个名字,供以后引用操作:为表达式取一个名字,供以后引用 说明:说明:1、表达式可为常数、变量、标号、指令助记符、字符、表达式可为常数、变量、标号、指令助记符、字符串串 2、在一个源程序中,被、在一个源程序中,被EQU伪指令赋值的符号伪指
42、令赋值的符号不能不能不能不能 再次赋值,而用再次赋值,而用=定义的符号名可重复定义定义的符号名可重复定义.3、赋值语句仅在汇编源程序时,作为替代符号用,、赋值语句仅在汇编源程序时,作为替代符号用,不产生目标代码,不产生目标代码,也不占有存储单元也不占有存储单元也不占有存储单元也不占有存储单元2/6/202345现代微机原理与接口技术现代微机原理与接口技术赋值伪指令示例赋值伪指令示例 CONST EQUEQU 100*2 ;定义符号常数;定义符号常数 ADDRS EQUEQU BX+10 ;为地址表达式定义名字;为地址表达式定义名字 CHAR EQUEQU COMPUTER ;为字符串定义名字;
43、为字符串定义名字 COUNT=AX ;给寄存器定义名字;给寄存器定义名字 .MOV BX,CONST ;引用;引用 ADD BX,COUNT SUB ADDRS,20.等同于等同于 MOV BX,100*2 ADD BX,AX SUB BX+10,20 2/6/202346现代微机原理与接口技术现代微机原理与接口技术(六)地址计数器与对准伪指令(六)地址计数器与对准伪指令1 1)地址计数器)地址计数器)地址计数器)地址计数器$示例示例1 ARRAY DW 1,2,$+4$+4,3,4,$+3$+3ARRAY 01 0074H 00 02 00 7C 7C 0078H 00 00 03 00 0
44、4 00 81 81 007EH 00 00示例示例2 BUFFER DB 1,2,3,4,5 COUNT EQU$-BUFFERCOUNT EQU$-BUFFER 数据定义的结果:数据定义的结果:COUNT的值即的值即为为BUFFER的长度的长度 示例示例3 OUT 21H,AL JMP$+2JMP$+2 ;跳转到下一句跳转到下一句 MOV AX,02/6/202347现代微机原理与接口技术现代微机原理与接口技术 2 2)定位伪指令)定位伪指令)定位伪指令)定位伪指令 格式格式格式格式1 1:ORG ORG 表达式表达式表达式表达式 格式格式格式格式2 2:ORG$+ORG$+表达式表达式表
45、达式表达式 功能:将表达式的值送入程序计数器功能:将表达式的值送入程序计数器$表示程序计数器的当前值表示程序计数器的当前值 定位伪指令示例定位伪指令示例 10H 20H D_SEG SEGMENT PARA DATA 11H 30H ORG 10HORG 10H X DB 20H,30H ORG$+5 ORG$+5 17H 40H Y DB 40H,50H 18H 50H D_SEG ENDS2/6/202348现代微机原理与接口技术现代微机原理与接口技术 完整段定义结构完整段定义结构 简化段定义结构简化段定义结构 程序段前缀结构程序段前缀结构 COM文件结构文件结构汇编语言源程序结构汇编语言
46、源程序结构2/6/202349现代微机原理与接口技术现代微机原理与接口技术完整段定义结构完整段定义结构DATA SEGMENT DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV AH,4CHMOV AH,4CH INT 21H INT 21HCODE ENDS END START 2/6/202350现代微机原理与接口技术现代微机原理与接口技术简化段定义结构简化段定义结构.MODEL SMALL.DATA .CODE MOV AX,DATA MOV DS,AX MOV AH,4CH INT 2
47、1H END2/6/202351现代微机原理与接口技术现代微机原理与接口技术利用程序段前利用程序段前缀的结构缀的结构DATA SEGMENT DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATAMAIN PROC FARMAIN PROC FAR PUSH DSPUSH DS MOV AX,0 MOV AX,0 PUSH AX PUSH AX MOV AX,DATA MOV DS,AX RETRETMAIN ENDPMAIN ENDPCODE ENDS END MAIN 2/6/202352现代微机原理与接口技术现代微机原理与接口技术常用的返回常用的返回DO
48、S的方法的方法n将主程序设计成一个属性为将主程序设计成一个属性为FAR的过程的过程,由由DOS调用该过程执行,由调用该过程执行,由RET指令返回指令返回DOS(原理和使用方法见后)(原理和使用方法见后)n使用使用DOS功能调用的功能调用的4CH功能功能:MOV AH,4CHINT 21Hn使用使用INT 20H指令指令2/6/202353现代微机原理与接口技术现代微机原理与接口技术存储单元存储单元NUM中为一个中为一个16位的二进数,统计其中值为位的二进数,统计其中值为1 的位的位的个数存入的个数存入RESULT C_SEG SEGMENT .MAIN PROC FARMAIN PROC FA
49、R JZ DONE PUSH DSPUSH DS SAL AX,1 MOV AX,0MOV AX,0 JNC NEXT PUSH AXPUSH AX INC CL MOV AX,D_SEGMOV AX,D_SEG NEXT:JMP LOOP1 MOV DS,AXMOV DS,AX DONE:MOV RESULT,CL MOV CX,0 RETRET MOV AX,NUM MAIN ENDPMAIN ENDPLOOP1:AND AX,AX C_SEG ENDS END MAIN本程序采用的是用本程序采用的是用RET返回返回DOS的方法的方法 2/6/202354现代微机原理与接口技术现代微机原理
50、与接口技术 INT 20H DS INT 20H DS 程序段前缀区程序段前缀区程序段前缀区程序段前缀区 程序区程序区程序区程序区程序加载结构程序加载结构操作系统加载操作系统加载操作系统加载操作系统加载EXEEXE程序时自动程序时自动程序时自动程序时自动在前面加上在前面加上在前面加上在前面加上256256字字字字节的程序段前缀节的程序段前缀节的程序段前缀节的程序段前缀 PUSH DSPUSH DS MOV AX,0 MOV AX,0 PUSH AXPUSH AX 把程序段前缀区第一个字节单元的把程序段前缀区第一个字节单元的把程序段前缀区第一个字节单元的把程序段前缀区第一个字节单元的地址和偏移量