《微型计算机原理》课件chapter4 汇编语言程序设计.ppt

上传人(卖家):momomo 文档编号:7570985 上传时间:2024-03-19 格式:PPT 页数:64 大小:1.41MB
下载 相关 举报
《微型计算机原理》课件chapter4 汇编语言程序设计.ppt_第1页
第1页 / 共64页
《微型计算机原理》课件chapter4 汇编语言程序设计.ppt_第2页
第2页 / 共64页
《微型计算机原理》课件chapter4 汇编语言程序设计.ppt_第3页
第3页 / 共64页
《微型计算机原理》课件chapter4 汇编语言程序设计.ppt_第4页
第4页 / 共64页
《微型计算机原理》课件chapter4 汇编语言程序设计.ppt_第5页
第5页 / 共64页
点击查看更多>>
资源描述

1、计算机硬件技术基础计算机硬件技术基础2024年3月19日第1页汇编语言语句格式及运算符汇编语言语句格式及运算符1伪指令2汇编语言程序设计方法3主要内容主要内容计算机硬件技术基础计算机硬件技术基础2024年3月19日第2页 1、用指令助记符、符号地址、标号、伪指令等符号书写程序、用指令助记符、符号地址、标号、伪指令等符号书写程序的语言称为的语言称为汇编语言汇编语言。2、用汇编语言编写的程序称为源程序或、用汇编语言编写的程序称为源程序或汇编语言源程序汇编语言源程序。3、用汇编语言编写的程序必须翻译成由机器代码组成的目、用汇编语言编写的程序必须翻译成由机器代码组成的目标程序,这个翻译过程称为标程序,

2、这个翻译过程称为汇编汇编(Assemble)。4、用来完成汇编过程的系统程序称为、用来完成汇编过程的系统程序称为汇编程序汇编程序(Assembler)。小汇编小汇编ASM宏汇编宏汇编MASM计算机硬件技术基础计算机硬件技术基础2024年3月19日第3页E 汇编语言源程序语句类型汇编语言源程序语句类型指令性语句:指令性语句:主要由主要由CPUCPU指令组成指令组成指示性语句:指示性语句:主要由伪操作组成,又称伪指令主要由伪操作组成,又称伪指令E 汇编语言语句的格式汇编语言语句的格式标识符标识符:指令助记符指令助记符 操作数操作数 ;注解;注解LOOPER:MOV AL,DATASIDATA1 D

3、B 0F8H,60H,0ACH指令指令伪指令伪指令P111计算机硬件技术基础计算机硬件技术基础2024年3月19日第4页1 1.标识符标识符 给指令、常数或某一存储单元地址所起的名字。给指令、常数或某一存储单元地址所起的名字。常用作一段程序或一个数据块的开头,以便其它语句访问。常用作一段程序或一个数据块的开头,以便其它语句访问。(1)由字母(由字母(AZ、az),),数字(数字(09)或特殊字符(、)或特殊字符(、?、?、)组成;)组成;(2)数字不能作第一个字符,数字不能作第一个字符,“?”不能单独使用;不能单独使用;(3)标号最长为)标号最长为31个字符,若超过则保留前个字符,若超过则保留

4、前31个为有效标识符。个为有效标识符。组成规则:组成规则:(4)标号可以是常量名、标号名、变量名、过程名等;)标号可以是常量名、标号名、变量名、过程名等;(5)标号不能是保留字。保留字是在汇编语言中有特定意义的标记,)标号不能是保留字。保留字是在汇编语言中有特定意义的标记,包括指令、伪指令、寄存器名和运算符等。包括指令、伪指令、寄存器名和运算符等。计算机硬件技术基础计算机硬件技术基础2024年3月19日第5页当标识符后跟冒号时,表示它代表该行指令的起始地址。若当标识符后跟冒号时,表示它代表该行指令的起始地址。若一条指令前有标号,则程序中其它地方就可以引用此标号。一条指令前有标号,则程序中其它地

5、方就可以引用此标号。NEAR段内引用段内引用FAR 段间引用段间引用有冒号有冒号无冒号无冒号当标识符后不跟冒号时,可能是标号,也可能是变量。当标识符后不跟冒号时,可能是标号,也可能是变量。BYTE、WORD、DWORD、QWORD、TBYTE等等指令性语句中,名字可是标号;指令性语句中,名字可是标号;指示性语句中,名字可是变量名、段名、过程名等。指示性语句中,名字可是变量名、段名、过程名等。对于汇编程序来说,标号与变量是类似的,都是对于汇编程序来说,标号与变量是类似的,都是存储单元的地址,只是标号对应的存储单元中存放的存储单元的地址,只是标号对应的存储单元中存放的是指令;而变量所对应的存储单元

6、中存放的是数据。是指令;而变量所对应的存储单元中存放的是数据。INPUT:IN AL,DXINPUT IN AL,DXDATA1 DB 12H计算机硬件技术基础计算机硬件技术基础2024年3月19日第6页2 2.指令助记符指令助记符 表示执行的操作的性质,可以是表示执行的操作的性质,可以是CPU CPU 的指令的指令,也可是伪指令。也可是伪指令。若指令带有前缀(若指令带有前缀(REPREP、REPEREPE),),则指令前缀和操作码间要则指令前缀和操作码间要用空格分开。用空格分开。3 3.操作数操作数 是指令操作的对象。可以是数据本身,也可以是指出如何是指令操作的对象。可以是数据本身,也可以是

7、指出如何获得操作数的信息。当操作数超过一个时,互相间应用逗号获得操作数的信息。当操作数超过一个时,互相间应用逗号隔开。隔开。可作为操作数的有:可作为操作数的有:立即数、寄存器名、存储单元地址、立即数、寄存器名、存储单元地址、标号、变量和表达式等标号、变量和表达式等计算机硬件技术基础计算机硬件技术基础2024年3月19日第7页 常数常数十进制数、二进制数十进制数、二进制数B B、八进制数八进制数O O、十六进制数十六进制数H H注:第一个字符是注:第一个字符是AF时,字符前应加时,字符前应加“0”十进制浮点数:十进制浮点数:2323E-2E-2、8.75E-48.75E-4十六进制实数:后跟十六

8、进制实数:后跟R RASCIIASCII常数:用单引号括起来。常数:用单引号括起来。A A、CDCD、179179、$寄存器寄存器AHAH、CLCL、AXAX、DXDX、BPBP、DIDI、SSSS、CS CS 标号标号标号代表一条指令的符号地址,所以可作为转移、过程调标号代表一条指令的符号地址,所以可作为转移、过程调用用CALLCALL及循环控制及循环控制LOOPLOOP等指令的操作数。等指令的操作数。计算机硬件技术基础计算机硬件技术基础2024年3月19日第8页 变量变量是存储器中某数据区的名字,在指令中可作为存储器操作数。是存储器中某数据区的名字,在指令中可作为存储器操作数。MOV AX

9、,DATA1 表达式表达式数值表达式:数值表达式:产生数值结果,有大小,无属性产生数值结果,有大小,无属性地址表达式:地址表达式:是一个表示存储器地址的变量或标号是一个表示存储器地址的变量或标号4 4.注解注解可有可无;可有可无;在注解前要加上分号;在注解前要加上分号;注解对汇编后产生的目标程序无影响。注解对汇编后产生的目标程序无影响。MOV AX,DATA12ADD AL,VAL AND 0FH计算机硬件技术基础计算机硬件技术基础2024年3月19日第9页TEXT算术算术运算符运算符逻辑逻辑运算符运算符关系关系运算符运算符属性属性运算符运算符取值取值运算符运算符P117计算机硬件技术基础计算

10、机硬件技术基础2024年3月19日第10页TEXT算术算术运算符运算符逻辑逻辑运算符运算符关系关系运算符运算符属性属性运算符运算符取值取值运算符运算符算术运算符算术运算符、/、MOD(取余)取余)19/7结果是结果是219 MOD 7结果是结果是5MOV AX,DX/2LEA SI,TABLE+4计算机硬件技术基础计算机硬件技术基础2024年3月19日第11页TEXT算术算术运算符运算符逻辑逻辑运算符运算符关系关系运算符运算符属性属性运算符运算符取值取值运算符运算符、/、MOD(取余)取余)19/7结果是结果是219 MOD 7结果是结果是5MOV AX,DX/2LEA SI,TABLE+4逻

11、辑运算符逻辑运算符注意:注意:它们同时也是它们同时也是8088的指令的指令助记符。作为运算符是在程序汇助记符。作为运算符是在程序汇编时计算的,而作为指令助记符编时计算的,而作为指令助记符,则是在程序执行时计算的。,则是在程序执行时计算的。AND DX,0CH OR 0FEHAND、OR、NOT、XOR计算机硬件技术基础计算机硬件技术基础2024年3月19日第12页算术算术运算符运算符TEXT逻辑逻辑运算符运算符、/、MOD(取余)取余)19/7结果是结果是219 MOD 7结果是结果是5MOV AX,DX/2LEA SI,TABLE+4注意:注意:作为运算符作为运算符是在程序汇编时计是在程序汇

12、编时计算的,而作为指令算的,而作为指令助记符,则是在程助记符,则是在程序执行时计算的。序执行时计算的。AND DX,0CH OR 0FEHAND、OR、NOT、XOR关系关系运算符运算符属性属性运算符运算符取值取值运算符运算符关系运算符关系运算符EQ、NE、LT、GT、LE、GE 关系运算的结果始终是数字值。若关系关系运算的结果始终是数字值。若关系不成立,则结果为不成立,则结果为0;否则为;否则为0FFFFH。MOV BX,PORT LT 5 若若PORT的值小于的值小于5,则汇编后产生的语句为,则汇编后产生的语句为 MOV BX,0FFFFH;反之则为反之则为 MOV BX,0计算机硬件技术

13、基础计算机硬件技术基础2024年3月19日第13页算术算术运算符运算符TEXT逻辑逻辑运算符运算符、/、MOD(取余)取余)19/7结果是结果是219 MOD 7结果是结果是5MOV AX,DX/2LEA SI,TABLE+4注意:注意:作为运算符作为运算符是在程序汇编时计是在程序汇编时计算的,而作为指令算的,而作为指令助记符,则是在程助记符,则是在程序执行时计算的。序执行时计算的。AND DX,0CH OR 0FEHAND、OR、NOT、XOR关系关系运算符运算符属性属性运算符运算符取值取值运算符运算符EQ、NE、LT、GT、LE、GE 关系运算的结果关系运算的结果始终是数字值。若始终是数字

14、值。若关系不成立,则结关系不成立,则结果为果为0;否则为;否则为0FFFFH。MOV BX,PORT LT 5属性运算符属性运算符用来给指令中的操作数指定一个临时用来给指令中的操作数指定一个临时属性,而暂忽略当前的属性。属性,而暂忽略当前的属性。PTR 用于指定存储器操作数的类型。用于指定存储器操作数的类型。INC BYTE PTR BXSIMOV AL,BYTE PTR BUFJMP FAR PTR NEXTSHORT 仅用于无条件转移指令仅用于无条件转移指令,指出指出转移的标号在下一条指令的转移的标号在下一条指令的 -128127个字节范围内。个字节范围内。计算机硬件技术基础计算机硬件技术

15、基础2024年3月19日第14页EQ、NE、LT、GT、LE、GE算术算术运算符运算符TEXT逻辑逻辑运算符运算符、/、MOD(取余)取余)19/7结果是结果是219 MOD 7结果是结果是5MOV AX,DX/2LEA SI,TABLE+4注意:注意:它们同时也它们同时也是是8088的指令助记的指令助记符。作为运算符是符。作为运算符是在程序汇编时计算在程序汇编时计算的,而作为指令助的,而作为指令助记符,则是在程序记符,则是在程序执行时计算的。执行时计算的。AND DX,0CH OR 0FEHAND、OR、NOT、XOR关系关系运算符运算符属性属性运算符运算符取值取值运算符运算符 关系运算的结

16、关系运算的结果始终是数字值果始终是数字值。若关系不成立。若关系不成立,则结果为,则结果为0;否;否则为则为0FFFFH。MOV BX,PORT LT 5用来给指令中的操用来给指令中的操作数指定一个临时作数指定一个临时属性,而暂忽略当属性,而暂忽略当前的属性。前的属性。PTR 用于指定用于指定存储器操作数的存储器操作数的类型。类型。SHORT 指出转指出转移的标号在下一移的标号在下一条指令的条指令的 -128127个字节个字节范围内。范围内。取值运算符取值运算符SEG用于取存储单元地址的段值用于取存储单元地址的段值DATA SEGMENTBUF1 DB 100 DUP(0)BUF2 DW 200

17、 DUP(20H)DATA ENDSMOV AL,TYPE BUF2 ;(AL)=2MOV BL,LENGTH BUF2 ;(;(BL)=200MOV CX,SIZE BUF2 ;(;(CX)=400OFFSET用于取地址的偏移量用于取地址的偏移量LENGTH计算一个存储区单元的个数计算一个存储区单元的个数SIZE计算一个存储区单元的字节总数计算一个存储区单元的字节总数TYPE将变量或标号类型属性用数字表示将变量或标号类型属性用数字表示BYTEWORDDWORDNEARFAR124-1-2计算机硬件技术基础计算机硬件技术基础2024年3月19日第15页EQ、NE、LT、GT、LE、GE算术算术

18、运算符运算符TEXT逻辑逻辑运算符运算符、/、MOD(取余)取余)19/7结果是结果是219 MOD 7结果是结果是5MOV AX,DX/2LEA SI,TABLE+4注意:注意:它们同时也它们同时也是是8088的指令助记的指令助记符。作为运算符是符。作为运算符是在程序汇编时计算在程序汇编时计算的,而作为指令助的,而作为指令助记符,则是在程序记符,则是在程序执行时计算的。执行时计算的。AND DX,0CH OR 0FEHAND、OR、NOT、XOR关系关系运算符运算符属性属性运算符运算符取值取值运算符运算符 关系运算的结果关系运算的结果始终是数字值。若始终是数字值。若关系不成立,则结关系不成立

19、,则结果为果为0;否则为;否则为0FFFFH。MOV BX,PORT LT 5用来给指令中的操用来给指令中的操作数指定一个临时作数指定一个临时属性,而暂忽略当属性,而暂忽略当前的属性。前的属性。PTR 用于指定存储用于指定存储器操作数的类型。器操作数的类型。SHORT 指出转移指出转移的标号在下一条指的标号在下一条指令的令的 -128127个个字节范围内。字节范围内。SEG取存储单元段取存储单元段地址地址OFFSET取地址的取地址的偏移量偏移量TYPE将变量或标号将变量或标号类型用数字表示类型用数字表示LENGTH计算存储计算存储区单元的个数区单元的个数SIZE计算存储区单计算存储区单元的字节

20、总数元的字节总数计算机硬件技术基础计算机硬件技术基础2024年3月19日第16页伪指令与指令的区别:伪指令与指令的区别:指令是给指令是给CPUCPU的命令,在程序运行时由的命令,在程序运行时由CPUCPU执行;执行;伪指令是给汇编程序的命令,在汇编过程中由汇编程伪指令是给汇编程序的命令,在汇编过程中由汇编程序序MASMMASM进行处理。进行处理。汇编后,每条汇编后,每条CPUCPU指令产生一一对应的目标代码;指令产生一一对应的目标代码;伪指令则不产生与之相对应的目标代码。伪指令则不产生与之相对应的目标代码。伪指令用于在汇编时给汇编程序提供汇编信息如控制转伪指令用于在汇编时给汇编程序提供汇编信息

21、如控制转移地址,存储空间分配等,但不产生目标代码。移地址,存储空间分配等,但不产生目标代码。P113计算机硬件技术基础计算机硬件技术基础2024年3月19日第17页常用的伪指令:常用的伪指令:1、定义数据、定义数据DB、DW、DD、DQ、DT;2、定义符号定义符号EQU;3、段定义段定义SEGMENT、ENDS;4、设定段寄存器设定段寄存器ASSUME;5、定义过程定义过程PROC、ENDP;6、定位伪指令定位伪指令ORG,地址计数器,地址计数器$;7、汇编结束伪指令汇编结束伪指令END;8、模块间通信模块间通信PUBLIC、EXTRN;9、宏命令宏命令MACRO、ENDM计算机硬件技术基础计

22、算机硬件技术基础2024年3月19日第18页1.定义数据伪指令定义数据伪指令用来定义存储空间内容及长度用来定义存储空间内容及长度格式:格式:变量名变量名 伪操作伪操作 操作数操作数,操作数,操作数 DATA DB 100,0FFHSTR DB HELLONUM DD 00112233H 伪操作伪操作DB :定义变量类型为定义变量类型为BYTE,每个每个操作数占有操作数占有1个字节;个字节;DW:WORD 在内存中存放时,低在内存中存放时,低位字节在前,高位在后位字节在前,高位在后;DD 双字双字 DQ 四字四字 DT 十个字节十个字节 操作数操作数可以是常数、表达式或字符串,但每可以是常数、表

23、达式或字符串,但每项操作数的值不能超过伪操作所定义项操作数的值不能超过伪操作所定义的数据类型限定的范围。的数据类型限定的范围。字符串必须放在单引号字符串必须放在单引号中,用中,用DBDB伪操作来定义。伪操作来定义。P113计算机硬件技术基础计算机硬件技术基础2024年3月19日第19页DATA DB 100,0FFHSTR DB HELLONUM DD 112233H6 4HF FH4 8H4 5H4 CH4 CH4 FH3 3H2 2H1 1H0 0H0100:0000H0001H0002H3456789ADATASTRNUM计算机硬件技术基础计算机硬件技术基础2024年3月19日第20页

24、问号问号“?”也可作为操作数,此时仅给变量保留相应的存储也可作为操作数,此时仅给变量保留相应的存储单元,而不赋予确定的初值。单元,而不赋予确定的初值。当同样的操作重复多次时,可用重复操作符当同样的操作重复多次时,可用重复操作符“DUPDUP”表示,表示,DUPDUP操作可以嵌套。操作可以嵌套。FILLER DB?ZERO DW 30 DUP(0)AA DB 40 DUP(2,(,(4 DUP(?)(?)BB DB 5 DUP(1,2,4 DUP(3),),2 DUP(1,0);200个字节个字节;定义;定义1,2,3,3,3,3,1,0,1,0的的5次重复次重复例例计算机硬件技术基础计算机硬件

25、技术基础2024年3月19日第21页2.符号定义伪指令符号定义伪指令 EQU 给符号定义一个值。给符号定义一个值。CR EQU 0DHADR EQU ES:BP+DI+5;常数;常数;表达式;表达式TIMES EQU 50DATA DB TIMES DUP(?)(?)DATA DB 50 DUP(?)(?)等号等号“=”:EQUEQU不可对同一符号重复定义不可对同一符号重复定义可对同一符号重复定义可对同一符号重复定义P113计算机硬件技术基础计算机硬件技术基础2024年3月19日第22页 PURGE用于释放由用于释放由EQU伪指令定义的变量,使这些变伪指令定义的变量,使这些变量可以被重新定义。

26、量可以被重新定义。TIMES EQU 50 PURGE TIMES TIMES EQU 2;释放;释放TIMES变量变量;重新定义;重新定义计算机硬件技术基础计算机硬件技术基础2024年3月19日第23页3.段定义伪指令段定义伪指令 SEGMENT和和ENDS 在汇编语言源程序中定义逻辑段,以便生成目的代码和连在汇编语言源程序中定义逻辑段,以便生成目的代码和连接时将各同名段进行组合。接时将各同名段进行组合。段名段名 SEGMENT 定位类型定位类型组合类型组合类型类别类别段名段名 ENDS逻辑段的内容逻辑段的内容SEGMENT 和和ENDS 成对出现,前面的段名必须一致。成对出现,前面的段名必

27、须一致。段名段名 是给定义的段起的名称,可以是任意的,但不可省略。是给定义的段起的名称,可以是任意的,但不可省略。DATA SEGMENT WORDBUF DW 40 DUP(0)DATA ENDSP113计算机硬件技术基础计算机硬件技术基础2024年3月19日第24页 定位类型定位类型表示逻辑段起始地址可位于何处。表示逻辑段起始地址可位于何处。字节型字节型BYTE字型字型WORD节型(缺省值)节型(缺省值)PARA页型页型PAGE 组合类型组合类型规定在连接定位时本程序模块的各个段和其规定在连接定位时本程序模块的各个段和其它程序模块各段的组合关系。它程序模块各段的组合关系。NONE(缺省值)

28、(缺省值)PUBLICSTACKCOMMONMEMORYAT表达式表达式 类别类别用单引号括起来的字符串,以表明该段的类别。用单引号括起来的字符串,以表明该段的类别。连接时将不同模块中同类别(可以不同名)的段连接时将不同模块中同类别(可以不同名)的段集中在一起连续存放。集中在一起连续存放。表示一个独立的段,表示一个独立的段,不与其它模块同名不与其它模块同名段连接。段连接。与其它模块中用与其它模块中用PUBLIC说明的同名段连接成一个说明的同名段连接成一个逻辑段,段长度相加在内逻辑段,段长度相加在内存中连续存放。存中连续存放。堆栈段,连接时将具有堆栈段,连接时将具有STACK组合类型的同名组合类

29、型的同名段连接成一个大的堆栈,段连接成一个大的堆栈,长度相加,各个模块共享。长度相加,各个模块共享。与其它模块中用与其它模块中用COMMON说说明的同名段连接时,叠放在一明的同名段连接时,叠放在一起,长度为同名段中最长者。起,长度为同名段中最长者。连接方式与连接方式与COMMON相同,相同,定位在所装载程序的最后存储定位在所装载程序的最后存储区(最高地址)。区(最高地址)。段地址从表达段地址从表达式指定的节式指定的节(PARA)边界边界开始。开始。计算机硬件技术基础计算机硬件技术基础2024年3月19日第25页4 4.段寄存器定义伪指令段寄存器定义伪指令 ASSUMEASSUMEASSUME

30、段寄存器:段名段寄存器:段名,段寄存器:段名,段寄存器:段名,放在代码段的开始,通知汇编程序,在此前定义过的逻辑段放在代码段的开始,通知汇编程序,在此前定义过的逻辑段使用哪一个段寄存器存放段地址。当汇编程序汇编一个逻辑段使用哪一个段寄存器存放段地址。当汇编程序汇编一个逻辑段时,即可利用相应的段寄存器寻址该逻辑段中的指令或数据。时,即可利用相应的段寄存器寻址该逻辑段中的指令或数据。CODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKMOV AX,DATAMOV DS,AXCODE ENDSP114计算机硬件技术基础计算机硬件技术基础2024年3月19日第26页5

31、.定义过程伪指令定义过程伪指令可将具有一定功能的程序段看成为一个过程(子程序)可将具有一定功能的程序段看成为一个过程(子程序)过程名过程名 PROC 类型类型 RET过程名过程名 ENDP过程体过程体调用过程:调用过程:CALL CALL 过程名过程名KSDIN PROC NEARMOV AH,1INT 21HMOV IN-BUF,ALRETKSDIN ENDPCALL KSDIN类型:类型:说明该子程序的调用属性。若供段内调用则为说明该子程序的调用属性。若供段内调用则为NEARNEAR(系统默认值),供段间调用为系统默认值),供段间调用为FARFAR。P114计算机硬件技术基础计算机硬件技术

32、基础2024年3月19日第27页 为了简化汇编语言源程序的书写,把一些频繁出现的程序为了简化汇编语言源程序的书写,把一些频繁出现的程序段定义为段定义为“宏指令宏指令”,当程序中遇到这个程序段时,只需用,当程序中遇到这个程序段时,只需用一条宏调用语句来代替。一条宏调用语句来代替。宏宏 名名 MACRO形式参数形式参数1,形式参数,形式参数2,ENDM宏体宏体6.宏命令宏命令说明:说明:宏名是宏调用的依据,是区别不同宏定义的标志,不宏名是宏调用的依据,是区别不同宏定义的标志,不可缺省。形参用于宏与调用它的主程序间参数的传递,其个可缺省。形参用于宏与调用它的主程序间参数的传递,其个数根据实际需要设定

33、,也可以没有。数根据实际需要设定,也可以没有。P116计算机硬件技术基础计算机硬件技术基础2024年3月19日第28页MOV CL,4SAL AL,CLSHIFT MACROMOV CL,4SAL AL,CLENDMSHIFT MACRO XMOV CL,XSAL AL,CLENDMSHIFT MACRO X,YMOV CL,XSAL Y,CLENDMSHIFT 4SHIFT 4,BXSHIFT 计算机硬件技术基础计算机硬件技术基础2024年3月19日第29页“宏宏”与与“过程过程”的区别:的区别:宏调用语句由宏调用语句由MASMMASM中的宏处理程序来识别;中的宏处理程序来识别;调用过程的调

34、用过程的CALLCALL语句由语句由CPUCPU来执行。来执行。使用宏调用不能缩短目标代码长度;使用宏调用不能缩短目标代码长度;“过程过程”经汇编后的机器代码独立存在,在存储器中只保留经汇编后的机器代码独立存在,在存储器中只保留一份,故节省内存空间。一份,故节省内存空间。过程调用要有断点和现场的保护及恢复,宏调用则不需要。过程调用要有断点和现场的保护及恢复,宏调用则不需要。同一条宏指令在各次调用过程中可完成不同的操作;同一条宏指令在各次调用过程中可完成不同的操作;任何一个任何一个“过程过程”在各次调用中只能完成完全相同的功能。在各次调用中只能完成完全相同的功能。计算机硬件技术基础计算机硬件技术

35、基础2024年3月19日第30页7.7.定位伪指令定位伪指令ORGORG与地址计数器与地址计数器$ORG 表达式表达式 将本指令后面语句定义的内存数据或程序,从表达式给定将本指令后面语句定义的内存数据或程序,从表达式给定的地址单元开始连续存放。表达式的值为无符号常量。的地址单元开始连续存放。表达式的值为无符号常量。地址计数器值地址计数器值$汇编程序对源程序汇编过程中使用地址计数器保存当前正汇编程序对源程序汇编过程中使用地址计数器保存当前正在汇编的指令地址。用户可以用在汇编的指令地址。用户可以用“$”来引用该计数器的值。来引用该计数器的值。BUF DW 60 DUP(0)TOP EQU$-BUF

36、补充:补充:计算机硬件技术基础计算机硬件技术基础2024年3月19日第31页8.模块定义与连接伪指令模块定义与连接伪指令 当多个目的程序连接时,为使连接程序正确连接,必须互相当多个目的程序连接时,为使连接程序正确连接,必须互相提供一些信息,即通过标识符的相互使用来交换信息。提供一些信息,即通过标识符的相互使用来交换信息。PUBLIC 名称名称,名称,名称,此名称是在本模块中定义的,可供其它模块使用。此名称是在本模块中定义的,可供其它模块使用。EXTRN 名称:类型名称:类型,名称:类型,名称:类型此名称在本模块中并未定义,而是由外部其它模块定此名称在本模块中并未定义,而是由外部其它模块定义的名

37、称,但本模块要使用它。义的名称,但本模块要使用它。计算机硬件技术基础计算机硬件技术基础2024年3月19日第32页9.汇编结束伪指令汇编结束伪指令表示源程序的结束,令汇编程序停止汇编。表示源程序的结束,令汇编程序停止汇编。END 表达式表达式表达式表示该汇编程序的启动地址表达式表示该汇编程序的启动地址END START START所代表的地址是当程序所代表的地址是当程序执行时,第一条要执行的指令的执行时,第一条要执行的指令的地址。地址。伪指令伪指令ENDEND不和其它伪指令成对使用。它通知汇编程序不和其它伪指令成对使用。它通知汇编程序源程序到此结束。后面的表达式通常是源程序第一条指令源程序到此

38、结束。后面的表达式通常是源程序第一条指令(不是伪指令)的标号,可以省略。(不是伪指令)的标号,可以省略。P116计算机硬件技术基础计算机硬件技术基础汇编语言源程序分段结构STACK SEGMENT PARA STACK STACKDB 500 DUP(0)STACK ENDSDATA SEGMENTDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV ES,AXCODE ENDSEND STARTMOV AH,4CHINT 21H定义堆栈段,大定义堆栈段,大小视情况而定

39、。小视情况而定。定义数据段。定义数据段。定义代码段。定义代码段。这里加入你这里加入你的程序代码的程序代码这里定义数据这里定义数据和内存空间和内存空间程序从程序从这里开这里开始执行始执行计算机硬件技术基础计算机硬件技术基础2024年3月19日第34页顺序程序顺序程序分枝程序分枝程序循环程序循环程序计算机硬件技术基础计算机硬件技术基础2024年3月19日第35页计算机硬件技术基础计算机硬件技术基础2024年3月19日第36页 如何绘制程序框图如何绘制程序框图(流程图流程图)?NY?计算机硬件技术基础计算机硬件技术基础2024年3月19日第37页框中标明子程序名字框中标明子程序名字(入口参数等入口参

40、数等)。计算机硬件技术基础计算机硬件技术基础2024年3月19日第38页YYYNNN有错?有错?有错?结束汇 编输入(修改)源程序连 接运 行查 错开始用EDIT,NOTEPAD等任何文本编辑器。源程序存为.ASM文件 用MASM宏汇编程序进行汇编。汇编后生成.OBJ目标文件。命令格式:MASM ;用LINK连接程序进行连接。连接后生成.EXE可执行文件。命令格式:LINK ;用DEBUG等调试程序进行调试。命令格式:DEBUG 计算机硬件技术基础计算机硬件技术基础2024年3月19日第39页1.顺序结构程序顺序结构程序CPU在执行时,是以指令在执行时,是以指令的排列顺序逐条执行的。的排列顺序

41、逐条执行的。M、N、W分别为分别为三个三个8位无符号数,存位无符号数,存放在数据段中偏移地址放在数据段中偏移地址为为DATA的顺序单元中,的顺序单元中,求求Q=MNW,Q可可放于放于AX中。中。LEA SI,DATAMOV AL,SIMOV BL,SI+1MUL BLMOV BX,0MOV BL,SI+2SUB AX,BXHLT例例1计算机硬件技术基础计算机硬件技术基础2024年3月19日第40页例例2 将内存(将内存(10050H)单元的压缩单元的压缩BCD数转数转换为非压缩的换为非压缩的ASCII码形式,分别存入码形式,分别存入10051H和和10052H单元。单元。MOV AX,1000

42、HMOV DS,AXMOV SI,50HMOV AL,SIAND AL,0FHMOV SI+1,ALMOV AL,SIMOV CL,4SHR AL,CLMOV SI+2,ALHLTOR AL,30HADD AL,30H计算机硬件技术基础计算机硬件技术基础2024年3月19日第41页 求求AX累加器和累加器和BX寄存器中两个无符号数寄存器中两个无符号数之差的绝对值,结果放之差的绝对值,结果放在内存(在内存(2800H)单元中。单元中。例例4CMP AX,BXJNC AAAA:SUB AX,BXMOV 2800H,AXXCHG AX,BXHLT出口出口P1P2入口入口A成立否成立否YN2.分枝结构

43、程序分枝结构程序计算机硬件技术基础计算机硬件技术基础2024年3月19日第42页条件条件1成立?成立?条件条件2成立?成立?条件条件n成立?成立?P n+1P1YNNNP2YP nY选择程序选择程序分枝程序分枝程序出口出口P1P2入口入口A成立否成立否YN计算机硬件技术基础计算机硬件技术基础2024年3月19日第43页例例5 取接口取接口8000H的数的数据,若该数不小于据,若该数不小于150时,则向接口时,则向接口8001H传送传送80H;若若该数在该数在100到到149之之间,则向间,则向8001H传传送送40H;若该数在若该数在50到到99之间,则传之间,则传送送20H;若在若在50以以

44、下,则传送下,则传送10H。MOV DX,8000HIN AL,DXCMP AL,150JNC P1CMP AL,100JNC P2CMP AL,50JNC P3MOV AL,10HJMP TTP1:MOV AL,80HJMP TTP2:MOV AL,40HJMP TTP3:MOV AL,20HTT:MOV DX,8001HOUT DX,ALHLT计算机硬件技术基础计算机硬件技术基础2024年3月19日第44页3.循环结构程序循环结构程序让让CPU重复执行某一系列的指令,完成重复的工作。重复执行某一系列的指令,完成重复的工作。初始化初始化工作部分工作部分循环控制循环控制条件?条件?条件?条件?

45、初始化初始化工作部分工作部分循环控制循环控制YN计算机硬件技术基础计算机硬件技术基础2024年3月19日第45页例例6MOV DX,SEG LISTMOV DS,DXMOV SI,OFFSET LISTMOV CX,8000HMOV AL,55HGOON:MOV SI,ALINC SIDEC CXJNZ GOONHLTMOV DI,OFFSET LISTMOV CX,8000HMOV AL,55HREP STOSBHLT计算机硬件技术基础计算机硬件技术基础2024年3月19日第46页例例7 在以在以DATA 为首址为首址的内存数据段中,的内存数据段中,存放了存放了100个带符个带符号数,试将其

46、中最号数,试将其中最大和最小的数找出大和最小的数找出来,分别存放到以来,分别存放到以MAX 和和 MIN 为首为首的内存单元中。的内存单元中。LEA SI,DATAMOV CX,100CLDLODSWMOV MIN,AXDEC CXNEXT:LODSWCMP AX,MAXJG GREATERCMP AX,MINJL LESSJMP GOONGREATER:MOV MAX,AXJMP GOONLESS:MOV MIN,AXGOON:LOOP NEXTHLTMOV MAX,AX计算机硬件技术基础计算机硬件技术基础2024年3月19日第47页4.子程序设计应注意的问题子程序设计应注意的问题子程序是一

47、个功能相对独立的程序段,可以被其他程序调用。子程序是一个功能相对独立的程序段,可以被其他程序调用。入口(定义)入口(定义)保护现场保护现场子程序主体子程序主体返回(返回(RET)恢复现场恢复现场说明:说明:1.调用:子程序的调用由调用:子程序的调用由CALL指令完成。指令完成。2.现场保护与恢复:执行子程序时,为使其现场保护与恢复:执行子程序时,为使其父程序的数据(现场)不被破坏,应在执行父程序的数据(现场)不被破坏,应在执行前将这些有用的数据压入堆栈保护起来,返前将这些有用的数据压入堆栈保护起来,返回主程序前再将这些数据弹出堆栈,以恢复回主程序前再将这些数据弹出堆栈,以恢复其原有数据。其原有

48、数据。3.参数传递:主程序与子程序间有时需要传参数传递:主程序与子程序间有时需要传递相关数据。可以根据情况,使用寄存器、递相关数据。可以根据情况,使用寄存器、内存单元或堆栈来完成。内存单元或堆栈来完成。子程序结构示意图子程序结构示意图计算机硬件技术基础计算机硬件技术基础2024年3月19日第48页习题课常见程序设计举例常见程序设计举例 1、子程序设计、子程序设计 2、数制及码制的转换、数制及码制的转换 3、排序程序、排序程序 4、查找程序、查找程序计算机硬件技术基础计算机硬件技术基础汇编语言源程序分段结构及举例STACK SEGMENT PARA STACK STACKDB 500 DUP(0

49、)STACK ENDSDATA SEGMENTDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV ES,AXCODE ENDSEND STARTMOV AH,4CHINT 21H定义堆栈段,大定义堆栈段,大小视情况而定。小视情况而定。定义数据段。定义数据段。定义代码段。定义代码段。这里加入你这里加入你的程序代码的程序代码这里定义数据这里定义数据和内存空间和内存空间程序从程序从这里开这里开始执行始执行计算机硬件技术基础计算机硬件技术基础2024年3月19日第50页掌握以

50、下几点掌握以下几点:调用子程序用调用子程序用CALLCALL指令,返回调用程序用指令,返回调用程序用RETRET指令。指令。子程序允许嵌套调用。子程序允许嵌套调用。进入子程序后首先要保护主程序的运行状态进入子程序后首先要保护主程序的运行状态(标志位标志位)和和使用的寄存器内容使用的寄存器内容(称为称为保护现场保护现场),退出子程序前要,退出子程序前要恢恢复现场复现场。调用前要预先确定子程序中要调用前要预先确定子程序中要使用哪些寄存器使用哪些寄存器,并,并定义定义入口参数和出口参数入口参数和出口参数。参数传递可利用寄存器、存储单。参数传递可利用寄存器、存储单元或堆栈(要用元或堆栈(要用BPBP寻

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(《微型计算机原理》课件chapter4 汇编语言程序设计.ppt)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|