复****br/>1、掌握基本指令:MOVS指令用法和应用范围及对标志位的影响。
2、基本前缀:REP、REPE、REPNE、LOOP。
1
时间:2010—10月11日(第七周周一)
1、为什么要学****汇编语言。
2、掌握汇编语言源程序的格式。
3、掌握汇编语言中伪指令的定义方法。
4、了解“$”、算术运算符、逻辑运算符、
关系运算符。
2
第五章:汇编语言程序设计
§5-1汇编语言
为什么要用汇编语言写程序?
1、非常接近机器语言。
2、机器自检、系统初始化、I/O操作仍由汇编语言完成。
3、效率高。
一、汇编语言的定义与格式
1、汇编语言:
助记符、符号地址、字母等组成。
面向机器的程序设计语言。
用一组字母、数字和符号来代替二进制编码。
汇编语言用助记符来表示指令的操作码和操作数。
用标号或符号代表地址、常量或变量。
3
用高级语言编写的程序
编译或解释程序
目标程序
用汇编语言编写的程序
汇编程序
目标程序
汇编语言源程序
汇编程序译码
机器码列表文件
把汇编语言程序翻译成机器语言程序的过程称为汇编。
用汇编语言编写的程序,叫汇编语言源程序,或简称源程序
4
MOV CX, 5
MOV SI, OFFSET DAT1 MOV DI, OFFSET DAT2 CLC AGAIN:MOV AL, [SI] ADC [DI], AL INC SI INC DI DEC CX JNZ AGAIN HLT
编制两个5字节十六进制数相加,分别存放在DAT1和DAT2单元,结果送回DAT2单元
5
2、汇编语言源程序的格式:以两个5字节十六进制数相加为例DATA SEGMENT DAT1 DB 0F8H, 60H, 0ACH, 74H, 3BH ;被加数 DAT2 DB 00H, 36H, 9EH, 0D5H, 20H ;加数DATA ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATASTART: MOV AX, DATA MOV DS, AX MOV CX, 5 MOV SI, OFFSET DAT1 MOV DI, OFFSET DAT2 CLCAGAIN: MOV AL, [SI] ADC [DI], AL INC SI INC DI DEC CX JNZ AGAIN MOV AH, 4CH INT 21HCODE ENDS END START
数据段定义
代码段定义
返回DOS
汇编语言源程序通常有几个段构成,每个段以 SEGMENT语句开始,以ENDS语句结束,并分别有一个段名。
第一段是数据段,段名DATA,用来定义变量,存放原始数据和运算结果。第二段为代码段,段名为CODE,用来安排执行代码,是用户编程实现各项功能的主要部分。
整个源程序必须用END语句结束,它通知汇编程序停止汇编,END后面的标号START指明该程序执行的启动地址。
源程序中各段的名字可以任选,,在段的定义的时候也要定义出来。
6
DATA SEGMENT ;定义数据段
DATA1 DB 0F8H,60H,0ACH,74H,3BH ;被加数
DATA2 DB 0C1H,36H,9EH,0D5H,20H ;加数
DATA ENDS ;数据段结束
CODE SEGMENT ;定义代码段
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX ;初始化DS
MOV CX,5 ;循环次数送CX
MOV SI,0 ;置SI初值为0
CLC ;清CF标志
LOOPER: MOV AL,DATA2[SI] ;取一个字节加数
ADC DATA1[SI],AL ;与被加数相加
INC SI ;SI加1
DEC CX ;CX减1
JNZ LOOPER ;若不等于0,
转LOOPER
7
MOV AH,4CH
INT 21H ;返回DOS
CODE ENDS ;代码段结束
END START ;源程序结束
8
下面是一个源程序模块的典型段结构形式:
STACK SEGMENT ;定义堆栈段
STACK ENDS ;堆栈段结束
…
DATA1 SEGMENT ;定义数据段
DATA1 ENDS ;数据段结束
ESEG SEGMENT ;定义附加段
ESEG ENDS ;附加段结束
CODE SEGMENT ;定义代码段
ASSUME CS:CODE, DS:DATA,SS:START,ES:ESEG ;段的分配
START: ;指令性语句开始(我们第四章学
微机原理与应用第5章1节2010SGQ 来自淘豆网www.taodocs.com转载请标明出处.