伪指令及汇编语言源程序结构.ppt

上传人:hs****ma 文档编号:572001731 上传时间:2024-08-12 格式:PPT 页数:36 大小:418KB
返回 下载 相关 举报
伪指令及汇编语言源程序结构.ppt_第1页
第1页 / 共36页
伪指令及汇编语言源程序结构.ppt_第2页
第2页 / 共36页
伪指令及汇编语言源程序结构.ppt_第3页
第3页 / 共36页
伪指令及汇编语言源程序结构.ppt_第4页
第4页 / 共36页
伪指令及汇编语言源程序结构.ppt_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《伪指令及汇编语言源程序结构.ppt》由会员分享,可在线阅读,更多相关《伪指令及汇编语言源程序结构.ppt(36页珍藏版)》请在金锄头文库上搜索。

1、本章内容本章内容: : 1.1.指令的格式、功能及应用。指令的格式、功能及应用。 2.2.汇编语言源程序汇编语言源程序4 4种常见的结构形式。种常见的结构形式。 3.3.汇编语言源程序书写规则。汇编语言源程序书写规则。第第4章章伪指令及汇编语言源程序结构伪指令及汇编语言源程序结构 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第2 2页页第第2页页本章要求本章要求1.熟悉汇编语言的基本表达;2.掌握常用的伪指令语句并能熟练应用;3.掌握汇编语言源程序书写规则、语句格式;4.掌握段定义及程序分段。本章重点:本章重点: 数据定义伪指令、段定义计划学时:计划学时: 2-3学

2、时学时 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第3 3页页第第3页页语句类型指令(性)语句指令(性)语句完成一定操作功能,能够翻译成机器代码的语句指示性语句(伪指令语句)指示性语句(伪指令语句)为汇编程序在翻译汇编语言源程序时提供有关信息,并不翻译成机器代码4.1 语句类型及格式语句类型及格式4.1.1 语句类型语句类型 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第4 4页页第第4页页【例例】 程序的功能是完成两个字节数据相加程序的功能是完成两个字节数据相加,BUF1+BUF2SUM。 DATA SEGMENT ;段定义开始(;段

3、定义开始(DATA段)段) BUF1 DB 34H ;第;第1个加数个加数 BUF2 DB 2AH ;第;第2个加数个加数 SUM DB ? ;准备用来存放和数的单元;准备用来存放和数的单元 DATA ENDS ;段定义结束(;段定义结束(DATA段)段) CODE SEGMENT ;段定义开始(;段定义开始(CODE段)段) ASSUME CS:CODE,DS:DATA ;规定DATA、CODE分别为数据段和代码段 START: MOV AX,DATA MOV DS,AX ;给数据段寄存器;给数据段寄存器DS赋值赋值 MOV AL,BUF1 ;取第;取第1个加数个加数 ADD AL,BUF2

4、 ;和第;和第2个加数相加个加数相加 MOV SUM,AL ;存放结果;存放结果 MOV AH,4CH INT 21H ;返回;返回DOS状态状态CODE ENDS ;段定义结束(;段定义结束(CODE段)段) END START ;整个源程序结束;整个源程序结束 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第5 5页页第第5页页4.1.2 语句格式语句格式指令性语句:指令性语句:格式:格式: 名字:名字: 操作码操作码 操作数操作数 ,操作数,操作数 ;注释;注释 伪指令语句:伪指令语句:格式:格式: 名字名字 伪操作伪操作 操作数操作数 ,操作数,操作数, ;注

5、释;注释 含义:由用户按一定规则定义的标识符组成:英文字母、数字、特殊符号形式:标号和变量名字定义满足的规则名字定义满足的规则(1 1)数字不能作为第一个字符)数字不能作为第一个字符(2 2)单独的问号(?)不能作为名字)单独的问号(?)不能作为名字(3 3)最大有效长度为)最大有效长度为3131(4 4)保留字不能作为名字使用)保留字不能作为名字使用语句的说明部分操作码用于指明操作的性质或功能。操作码用于指明操作的性质或功能。书写规则书写规则:操作码与操作数之间用空格分开。:操作码与操作数之间用空格分开。含义:指定参与操作的数据。含义:指定参与操作的数据。个数:一般指令,个数:一般指令,1个

6、或个或2个,也可以没有;个,也可以没有; 伪指令和宏指令,可以有多个。伪指令和宏指令,可以有多个。书写规则:操作数多于书写规则:操作数多于1个时,操作数之间用逗号分开个时,操作数之间用逗号分开 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第6 6页页第第6页页算术运算表达式算术运算表达式 + - * / MOD(取余)(取余)关系运算表达式关系运算表达式 EQ LT GT GE数值数值常数常数操作数操作数符号常数符号常数 (常数用符号名代替)(常数用符号名代替)表达式表达式逻辑运算表达式逻辑运算表达式 AND OR XOR NOT SHL SHR字符串字符串计算结果

7、为计算结果为逻辑值逻辑值: 真真 0FFFFH 假假 0000H例:例:ABCDEF,ab1267等等 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第7 7页页第第7页页表达式运算符举例表达式运算符举例(1) 算术运算符:算术运算符: 、 、 、 、ModVIDEO_BUF DB 25*2 DUP(?) ;分配50个字节单元ARRAY DW 1,2,3,4,5,6,7ARYEND DW ? MOV CX, (ARYEND-ARRAY)/2 ;取ARRAY数组个数送CXADD AX, BLOCK+2 ; 符号地址常数 有意义 ; 时意义不明确MOV AX, BX+1

8、; 错误用法错误用法MOV AX, BX+1 ; 正确用法正确用法 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第8 8页页第第8页页OPR1 EQU 25 ;00011001BOPR2 EQU 7 ;00000111B ;OPR1和OPR2为符号常数 AND AX, OPR1 AND OPR2(2) 逻辑和移位运算符:逻辑和移位运算符: AND、OR、XOR、NOT、SHL、SHR等价等价指令:指令: AND AX, 1MOV AX, NOT OPR2MOV AX, 0FFFFH SHL 2等价指令等价指令 MOV AX,0FFFCH指令指令运算符运算符等价指令等

9、价指令 MOV AX,0F8H 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第9 9页页第第9页页(3) 关系操作符:关系操作符: EQ、NE、LT、LE、GT、GE计算结果为逻辑值:计算结果为逻辑值: 真真 0FFFFH 假假 0000HOPR1 EQU 25 ;00011001BOPR2 EQU 7 ;00000111B ;OPR1和OPR2为符号常数 MOV AX, OPR1 EQ OPR2等价等价指令:指令: MOV AX, 0MOV AX, OPR1 GT OPR2等价等价指令:指令: MOV AX,0FFFFHMOV FID, (OFFSET Y - O

10、FFSET X) LE 128若若 128 (真真) 汇编结果:汇编结果: MOV FID, 0FFFFH若若 128 (假假) 汇编结果:汇编结果: MOV FID, 0 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第1010页页第第10页页【例例】: D1 EQU 25 D1 EQU 25 D2 EQU X1+12 D2 EQU X1+12 D3 EQU SI+2 D3 EQU SI+2 2.2.等号伪指令等号伪指令 = =格式与功能和EQU类似3.3.解除定义伪指令解除定义伪指令PURGEPURGE格式:PURGE 功能:解除指定符号的定义【例例】: Y1=7

11、Y1=7【例例】:Y1 EQU 7Y1 EQU 7 PURGE Y1 PURGE Y1 Y1 EQU 128 Y1 EQU 128 EQUEQU与与= =的差异:同一个程序中的差异:同一个程序中 = = 可以对一个符号重复定义可以对一个符号重复定义,EQUEQU不能对同一个符号重复定义不能对同一个符号重复定义【例例】:Y1=7Y1=7 Y1=128 Y1=128 的定义是正确的的定义是正确的 Y1 EQU 7Y1 EQU 7 Y1 EQU 128 Y1 EQU 128 的定义是错误的的定义是错误的4.2.1 符号定义伪指令符号定义伪指令1.1.等值伪指令等值伪指令EQUEQU格式: EQU 功

12、能:给符号名定义一个值、别的符号名、表达式或助记符。4.2 伪伪 指指 令令 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第1111页页第第11页页4.2.2 数据定义伪指令数据定义伪指令格式:格式: 变量名变量名 伪操作伪操作 操作数操作数 ,操作数,操作数, ;注释;注释 功能:为操作数分配存储单元,用变量与存储单元相联系伪操作伪操作 一个操作数占用空间一个操作数占用空间 变量变量DB 1个字节个字节 字节变量字节变量DW 2个字节(个字节(1个字)个字) 字变量字变量DD 4个字节(双字)个字节(双字) 双字变量双字变量DF 3字单元字单元 三字变量三字变量(

13、386以上以上CPU)DQ 4字单元字单元 四字变量。四字变量。DT 10个字节单元个字节单元 十字节变量十字节变量注意:使用DT助记符时,对于10进制操作数,必须给出后缀D 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第1212页页第第12页页操作数常数代表数据字节数据例:DATAB DB 18H,-1,30字数据例:DATAW DW 18H,2A45H 双字数据例:DATAD DD 18H,2F3A124BH表达式代表内存单元地址例: ADDR1 DW NEXT ADDR2 DD NEXT段地址高字节偏移地址高字节偏移地址低字节偏移地址高字节段地址低字节偏移地址

14、低字节ADDR1ADDR2字符串存放各字符的ASCII码例:STR1 DB ABCD STR1 DB A, B, C, D STR1 DB 41H,42H,43H,44H 注意:字符多于2个时,只能使用DB定义?只分配单元,不定义初值例:BUF1 DB 5,6,7,? BUF2 DW 56H,78H,?,345FHFF1E180045001800182A004B123A2FDATABDATABDATAWDATAWDATADDATAD 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第1313页页第第13页页数据定义及存储器分配伪操作举例数据定义及存储器分配伪操作举例 例

15、例: ARRAY DB HELLO DB AB DW AB 48H48H 45H45H 4CH4CH 4CH4CH 4FH4FH 41H41H 42H42H 42H42H 41H41H ARRAY ARRAY 用DW定义,AB看作一个数值,其高位字节为A,即41H,低位字节为B,即42H。用DB定义,AB看作两个数值,第一个为A,即41H,第二个为B,即42H。 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第1414页页第第14页页数据定义及存储器分配伪操作数据定义及存储器分配伪操作 操作数操作数“ ?”可以保留存储空间,但不存入数据。可以保留存储空间,但不存入数据

16、。 操作数字段还可以使用复制操作符(操作数字段还可以使用复制操作符(duplication operator)来复制某个(或某些)操作数。其格式为:)来复制某个(或某些)操作数。其格式为: repeat_count DUP (operand,operand) 其中其中repeat_out可以是一个表达式,它的值应该是一个正整可以是一个表达式,它的值应该是一个正整数,用来指定括号中操作数的重复次数。数,用来指定括号中操作数的重复次数。例例: 分别在分别在ARRAY1开始的存储区中存入开始的存储区中存入0,1,2,?,?,0,1,2,?;在,?;在ARRAY2中开辟中开辟100个字节存储空间。个字

17、节存储空间。伪操作指令如下:伪操作指令如下:ARRAY1 DB 2 DUP(0,1,2,?),?)ARRAY2 DB 100 DUP (?)(?) 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第1515页页第第15页页数据定义及存储器分配伪操作数据定义及存储器分配伪操作 DUP操作可以嵌套操作可以嵌套试给出下列变量所占用的存储空间(字节数)试给出下列变量所占用的存储空间(字节数)ARRAY DB ABC,200 DUP (20,10 DUP(EF,5,6),),10)TEST DW 1,2,10 DUP(20 DUP (9, 5 DUP (7,6,5),),10)例

18、例: DUP嵌套使用嵌套使用 ARRAY3 DB 100 DUP(0,2 DUP(1,2),),0,3)占用的存储单元数为:占用的存储单元数为: 100(1+2(1+1)+1+1)=700B答案:答案: 1. ARRAY 8403 , TEST 6424 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第1616页页第第16页页分分析析操操作作符符TYPE TYPE 含义:计算出变量的类型值或标号的类型值类型值: 变变量量:1、2、4、6、8、10; 标标号号:-1、-2LENGTH LENGTH 含义:计算分配给使用DUP定义的变量的单元数,其它变量的LENGTH值为

19、1SIZE SIZE 含义:计算出分配给变量的字节数值: TYPE和和LENGTH的乘积的乘积 OFFSET OFFSET 含义:计算出变量或标号的段内偏移地址例:MOV SI,OFFSET DAB1SEG SEG 含义:计算出变量或标号的段地址例:MOV AX,SEG DAB1 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第1717页页第第17页页 LENGTH DAB1=1 LENGTH DAB2=5 LENGTH DAW1=1 LENGTH DAW2=5 LENGTH DAD1=1 LENGTH DAD2=5 【例例】若有变量定义若有变量定义 DAB1 DB

20、20,20,20,20,20 DAB2 DB 5 DUP(20) DAW1 DW 20,20,20,20,20 DAW2 DW 5 DUP(20) DAD1 DD 20,20,20,20,20 DAD2 DD 5 DUP(20) TYPE DAB1=1TYPE DAB2=1TYPE DAW1=2TYPE DAW2=2 TYPE DAD1=4TYPE DAD2=4 SIZE DAB1=1 SIZE DAB2=5 SIZE DAW1=2 SIZE DAW2=10 SIZE DAD1=4 SIZE DAD2=20 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第1818页页

21、第第18页页【例例】相关变量定义如下:相关变量定义如下: ARRAY DW 100 DUP (?) TABLE DB ABCD分析下列指令执行特征(等价指令): ADD SI, TYPE ARRAY ADD SI, TYPE TABLE MOV CX, LENGTH ARRAY MOV CX, LENGTH TABLE MOV CX, SIZE ARRAY MOV CX, SIZE TABLEADD SI, 2ADD SI, 1MOV CX, 100MOV CX, 1MOV CX, 200MOV CX, 1 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第1919页页

22、第第19页页格式:THIS 含义:将变量或标号定义成指定的类型 变量可指定为BYTE、WORD、DWORD类型 标号可指定为NEAR、FAR类型合成操作符PTR格式: PTR 含义:给表达式强行指定类型 变量可指定为BYTE、WORD、DWORD类型 标号可指定为NEAR、FAR类型 例: DA1 DW 345FH DA2 EQU BYTE PTR DA1 DA3 EQU DA2+1THIS 例:DATAB EQU THIS BYTE DATAW DW 764EH注意:变量的类型与其他操作数的匹配。例:OPR1 DB 23H,4AH OPR2 DW 127FH,25A6H 如下两条指令是错误的

23、: MOV AX,OPR1 MOV BL,OPR2 使用PTR,如下才正确: MOV AX,WORD PTR OPR1; 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第2020页页第第20页页格式: SEGMENT 定位 组合 类别 属性 ;段体 ENDS注意:1.完整段定义由SEGMENT和ENDS这一对伪指令实现2.指令后的4个关键字用于确定段的各种属性3.如不指定,则采用默认参数;但如指定,要按上列次序用途: 在汇编语言程序中定义逻辑段,指定段的名称和范围,并指明段 的定位类型、组合类型及类别。4.2.3 段定义伪指令段定义伪指令1.1.段定义段定义 汇编语言

24、程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第2121页页第第21页页定位类型含义:规定段的起始地址要求方式PARA:段地址从段边界开始BYTE:段地址从字节边界开始WORD:段地址从字边界开始PAGE:段地址从页边界开始 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第2222页页第第22页页组合类型含义:规定本段与其他段的关系方式NONE:与其他段在逻辑上没有关系PUBLIC:与其它同名、同类别的段相邻地连在一起COMMON:与其他同名、同类别的段相覆盖MEMORY:几个逻辑段连接时,本段定位在地址最高的地方STACK:此段为堆栈段,连接方式与

25、PUBLIC段相同AT表达式 :本逻辑段根据表达式求值的结果定位段地址 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第2323页页第第23页页类别类别含义:指出各程序模块中类别相同的段,将它们连接在同一物理段内 连接方式:将所有的同类别段相邻分配类别名称:可以任意属性类型属性类型含义:规定16位段或32位段 表示方式USE16:表示16位段USE32:表示32位段注意:大多数MASM程序使用 code、data和stack来分别指名代码段、数据段和堆栈段。 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第2424页页第第24页页ASSUME

26、 :NOTHING ;取消段性质的规定2.2.指定段址伪指令指定段址伪指令 格式: ASSUME ASSUME :,: 功能:建立段寄存器与段的缺省关系注意: ASSUME伪指令并不为段寄存器设定初值3.设置段地址值设置段地址值 含义:在程序的代码段开始处进行DS、SS、ES的段基址装填。 例:MOV AX,DATA MOV DS,AX格式:ORG 表达式功能:设置某个单元的起始地址例:DATA SEGMENT ORG 100HORG 100H X DB 12H Y DW ? ORG 200H Z DD 9C56H DATA ENDS 4.ORG伪指令伪指令 汇编语言程序设计汇编语言程序设计

27、第第4章章伪指令及汇编语言源程序结构第第2525页页第第25页页5.5.地址计数器地址计数器$ $的使用的使用含义:表示下一个可用单元的地址应用:常用来确定数组中元素的个数例:BUF1 DB 1,2,3,4,5 CNT1 EQU $-BUF (常用) BUF2 DW 1,2,3,4,5 CNT2 EQU ($-BUF2)/2 CNT1、CNT2的值分别为数组BUF1、BUF2中数据元素的个数 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第2626页页第第26页页地址计数器地址计数器 $ $ 当当$ $用在伪操作的参数字段时,则和用在指令中的情况不同,用在伪操作的参数

28、字段时,则和用在指令中的情况不同,它表示的是地址计数器的当前值。它表示的是地址计数器的当前值。 00H00H 01H 00H 02H 00H 7CH7CH 00H00H 03H 00H 04H 00H 82H82H ARRAY ARRAY 007E007E0078007800740074例例: 若数组若数组ARRAY作如下定义:作如下定义:ARRAY DW 1,2,$+4,3,4,$+4若执行指令:若执行指令: MOV AX,ARRAY+4执行完后,执行完后,(AX)=007CH 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第2727页页第第27页页【例例】:试分析

29、下列程序段执行完后,试分析下列程序段执行完后,AX的值。的值。 ORG 3200HARRAY DB abc EVENLIST DW 1,2,3,$+4,5 MOV CX,3 LEA BX,LIST ; SHL CX,1 ; ADD BX,CX ; MOV AX,BX ;答案:(答案:(AX)=320EH(BX)=3204H(CX)=6(BX)=320AH 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第2828页页第第28页页格式:.MODEL 模式选择符功能:指明简化段所用内存模式 模式选择符TINY:微模式,所有数据及代码放入同一个物理段内SMALL:小模式,程序

30、中只有一个数据段和一个代码段MEDIUM:中模式,程序中有一个数据段、多个代码段COMPACT:压缩模式,程序中有多个数据段、一个代码段LARGE:大模式,程序中有多个数据段、多个代码段4 4.2.4.2.4简化段定义伪指令简化段定义伪指令1.1.模式选择伪指令模式选择伪指令.MODEL.MODEL 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第2929页页第第29页页2.数据段定义伪指令.DATA 格式:.DATA 名字功能:定义一个数据段注意:如果有多个数据段,则用名字区别。只有一个数据段时,隐含段名为 DATA3.堆栈段定义伪指令.STACK 格式: .STA

31、CK 长度功能:定义一个堆栈段,并形成SS及SP的初值注意: SP的默认值为1024,隐含段名为 STACK4.代码段定义伪指令.CODE格式: .CODE 名字功能:定义一个代码段注意:如果有多个代码段,则用名字区别。只有一个代码段时,隐含段名为 CODE5.程序返回伪指令.EXIT格式: .EXIT功能:返回DOS6.程序开始伪指令.STARTUP格式: .STARTUP功能:指示程序的开始位置 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第3030页页第第30页页NAMENAME伪指令伪指令格式:NAME 模块名功能:汇编程序将用此名作为模块名TITLETIT

32、LE伪指令伪指令格式:TITLE 文本功能:在没有NAME时,用其前6个字符作为模块名ENDEND伪指令伪指令格式:END 标号功能:表明源程序的结束4.2.5 程序开始和结束伪指令程序开始和结束伪指令 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第3131页页第第31页页 选择指令集的指令都以点(. .)作为引导,程序中使用时放在段外,一般放在程序的开始部分程序的开始部分,对整个源程序起作用。.8086.8086:选择:选择8086/80888086/8088指令集,此伪指令可以省略。指令集,此伪指令可以省略。.286.286: 选择选择8028680286指令集

33、,不包括特权指令。指令集,不包括特权指令。.286P.286P:选择:选择8028680286指令集,包括特权指令。指令集,包括特权指令。.287.287: 选择选择8028780287数字协处理器指令集。数字协处理器指令集。.386.386: 选择选择8038680386指令集,不包括特权指令。指令集,不包括特权指令。.386P.386P:选择:选择8038680386指令集,包括特权指令。指令集,包括特权指令。.387.387: 选择选择8038780387数字协处理器指令集。数字协处理器指令集。.486.486: 选择选择8048680486指令集,不包括特权指令。指令集,不包括特权指令

34、。.486P.486P:选择:选择8048680486指令集,包括特权指令。指令集,包括特权指令。.586.586: 选择选择PentiumPentium指令集,不包括特权指令。指令集,不包括特权指令。.586P.586P:选择:选择PentiumPentium指令集,包括特权指令。指令集,包括特权指令。4.2.6 指令集选择伪指令指令集选择伪指令 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第3232页页第第32页页4 4.2.7.2.7过程定义伪指令过程定义伪指令 过程定义伪指令格式: PROC NEAR/FAR RET ENDP 功能:把具有独立功能的程序段定

35、义为过程,供其它程序调用 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第3333页页第第33页页4.3 汇编语言源程序结构汇编语言源程序结构 完整段定义结构:用段定义伪指令,对用到的逻辑段分别定义典型的结构:数据段名 SEGMENT 数据段名 ENDS堆栈段名 SEGMENT 堆栈段名 ENDS代码段名 SEGMENT ASSUME START:段地址装填 MOV AH,4CH INT 21H 代码段名 ENDS END START【例】求字存储单元中两个数之差,结果存入下一个相邻的字单元中。NAME EXAMPLEDATA SEGMENTBUF DW 3483H,

36、4596HRES DW ? DATA ENDSSTACK SEGMENT STACK STACK STA DW 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE.DS:DATA START:MOV AX,DATA MOV DS,AX MOV AX,BUF SUB AX,BUF+2 MOV RES,AX MOV AH,4CH INT 21H CODE ENDSEND START 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第3434页页第第34页页简化段定义结构典型的结构: .MODEL SMALL .DATA .STAC

37、K .CODESTART:MOV AX,DATA MOV DS,AX MOV AH,4CH INT 21H END START例: NAME EXAMPLE .MODEL SMALL .DATA BUF DW 3483H,4596H RES DW ? .STACK 200 .CODE MOV AX,DATA MOV DS,AX MOV AX,BUF SUB AX,BUF+2 MOV RES,AX MOV AH,4CH INT 21H END START含义:把整个程序定义成一个FAR型过程 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第3535页页第第35页页例:三

38、个数相加并把结果存放在SUM单元中 DATA SEGMENT BUF DB 35H,78H,0A5H SUM DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA ASUM PROC FAR START:PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX程序段前缀结构程序段前缀结构含义:把整个程序定义成一个FAR型过程 MOV AL,0 MOV SI,OFFSET BUF ADD AL,SI INC SI ADD AL,SI INC SI ADD AL,SI MOV SUM,AL RET ASUM ENDP CODE ENDS END STARTCOM文件结构含义:包括EXE文件和COM文件 汇编语言程序设计汇编语言程序设计 第第4章章伪指令及汇编语言源程序结构第第3636页页第第36页页本章小结本章小结 本章主要介绍了语句格式、伪指令、汇编语言的源程序结构等内容。 汇编语言的语句由4部分组成:名字、操作码、操作数、注释。 伪指令只是向汇编程序提供某些信息,本身并不形成机器代码。 汇编语言的源程序有4中常见的结构形式: 完整段定义结构、简化段定义结构、程序段前缀结构、COM文件结构。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号