微机原理4章Word文件下载.docx
- 文档编号:15355735
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:35
- 大小:555.38KB
微机原理4章Word文件下载.docx
《微机原理4章Word文件下载.docx》由会员分享,可在线阅读,更多相关《微机原理4章Word文件下载.docx(35页珍藏版)》请在冰豆网上搜索。
4-2-1汇编语言源程序实例——zlgc2,exmp1
例1:
把内存中从STRING开始的字符串传送到BLOCK开始的内存区域去.
DAT1SEGMENT
STRINGDB'
ABCD1234'
NUMEQU$-STRING
DAT1ENDS
伪指令语句
DAT2SEGMENT
BLOCKDB50DUP(?
)
DAT2ENDS
CODSEGMENT
ASSUMECS:
COD,DS:
DAT1,ES:
DAT2
START:
MOVAX,DAT1
MOVDS,AX
指令语句
MOVAX,SEGBLOCK
MOVES,AX
MOVCX,NUM
LEASI,STRING
MOVDI,OFFSETBLOCK
LP:
MOVAL,[SI]
MOVES:
[DI],AL
INCSI
INCDI
LOOPLP
MOVAH,4CH
INT21H
CODENDS
ENDSTART
汇编语言语句种类——指令语句、伪指令语句、宏指令语句
1)指令语句——由指令系统中有的指令构成。
它指示CPU执行某种操作。
该指令语句汇编后将产生目标代码。
2)伪指令语句——属于说明性语句。
仅在汇编过程中起汇编管理和说明的作用,不产生目标代码。
实验二指令观察
4-2-2伪指令语句
格式:
名字伪操作指令[参数表][;
注释]
1、段定义伪指令
1)段定义伪指令
段名SEGMENT
…
段名ENDS
用于定义源程序的各个逻辑段。
如:
代码段、数据段、堆栈段等。
SEGMENT/ENDS必须成对出现,并且段名不能省略。
2)ASSUME假设伪指令
ASSUME段寄存器名:
段名[;
段寄存器名:
段名]
;
假设,用XX段寄存器指示XX逻辑段(段名)。
用于汇编程序计算标号和变量的段内地址和物理地址。
但是并没有实际装填相应段寄存器。
段寄存器的内容还需要执行指令装填。
2、数据定义伪指令——(weizlgc.asm)
BYT1DB12H,12,34H,34,56H,,,
BYT2DB'
ABCD1234?
+-*/$$'
WRDDW'
AB'
'
12'
34H,1234H
SDREDB8DUP(20H)
DWRDDD12H,1234H,12345678H,0
QNUMDQ123H,456H
TNUMDT1234H,5678H
数据定义伪指令用来定义内存操作数(变量)。
伪指令语句的名字称为变量名,它代表其右第1个内存变量。
变量名有三个属性:
段地址、偏移地址、数据类型。
段地址——SEGMENTBASE
段内偏移量——OFFSET
类型——TYPE
数据类型指该变量所占字节数。
如上:
BYT1的类型值为1,WRD的类型值为2,DWRD的类型值为4,QNUM的类型值为8,TNUM的类型值为10等。
3、符号定义伪指令——EQU,weizlgc
名字EQU表达式;
把表达式的值赋给名字
LENEQU$-DWRD
NUMEQU3+5
$-DWRD和3+5称为表达式。
表达式中的各个元素必须有具体值定义,也就是说,在源程序中就能计算出表达式的具体数值。
$——程序汇编计数器。
用来统计汇编过程中已分配的内存单元字节数。
4、类型定义伪指令——LABEL
给变量或标号定义类型,如
变量名LABELBYTE/WORD/DWORD
标号名LABELFAR/NEAR
5、END结束汇编伪指令
结束汇编命令。
汇编程序遇见此伪指令就结束汇编过程。
因此,END应该是源程序的最后一条指令。
其后的所有信息都将被汇编程序忽略。
END标号
此处的“标号”应该指向程序运行的第一条指令,即表示第一条指令所在地址。
操作系统OS会自动将该“标号”的逻辑地址装入CS:
IP中。
5、过程定义伪指令
过程名PROCFAR/NEAR;
。
指令序列
过程名ENDP
过程,即子程序,分为外部过程和内部过程。
外部过程——主程序和过程不在同一源程序文件中。
其属性为FAR;
内部过程——主程序和过程同在一个源程序文件中。
又分为段间FAR过程和段内NEAR过程。
4-2-3指令语句
1、指令语句格式
[标号:
][前缀]指令助记符[操作数表][;
2、标号
标号的作用——标号代表“:
”后面指令所在内存地址,供程序控制类指令作为转移目标用。
标号的属性:
标号有三个属性:
类型——TYPE远FAR——供段间转移
近NEAR——供段内转移
标号的组成——字母数字组成,以字母开头,最多8个字符。
不可使用8086/8保留字,如指令和伪指令助记符、寄存器名、运算操作符等。
标号的定义
例如:
NEXT:
ADDAX,BX;
定义NEXT为近标号
ABCLABELFAR;
定义ABC为与远标号
MOVDX,BX
F2PROCFAR;
定义F2为远过程名,也可作标号用
标号的使用
在循环和条件转移指令中只能用NEAR标号,无条件转移指令根据转移目标的FAR/NEAR属性来决定汇编成段间还是段内转移。
转移的距离有三种:
FAR——用4个字节表示目标地址
NEAR——用2个字节表示目标地址(的距离)
SHORT——用1个字节表示目标地址(的距离)
3、指令助记符
指令系统中的指令
4、操作数
1)立即操作数
数值常数
符号常数——由EQU等伪指令定义其数值
表达式——符号常数和数值常数的运算表达式
总之,汇编过程中就能够计算出具体数值。
2)寄存器操作数
3)储存器操作数
地址表达式:
有效地址EA=[BX/BP]+[SI/DI]+disp(8/16位)
其中,disp可用常数、变量及其表达式
段基:
如有BP,则用SS
如有段超越符(如ES:
[BX],用ES)则用指定的段寄存器,
其他,都用DS
4-2-4操作数表达式
1、属性分析运算符:
SEG,OFFSET,TYPE
2、合成运算符:
PTR
还有很多其它运算符,以后碰到再介绍。
注意:
源程序中,名字、标号、变量名的取名规则:
1)不得与8086汇编语言的保留字相同。
所谓保留字包括:
指令助记符、伪指令、运算操作符等。
2)由英文字母和数字等符号组成,不超过8个字符。
第13次上课内容
4-3汇编语言程序设计
一、程序结构
1、顺序结构——没有程序控制类指令,不改变程序运行顺序。
最基本也最简单。
2、分支结构——根据某个条件是否满足(成立),决定程序的走向。
由条件转移指令实现分支控制。
是计算机软件具有分析判断能力的基础。
3、循环结构——程序中的某一段需要连续多次重复运行,可以采用循环结构。
可以大大减少程序代码量,优化程序结构。
计算机最擅长的就是简单重复处理,而人最烦的就是简单重复工作,因此,循环结构是最能够体现计算机优势的程序结构。
4、子程序结构——1)程序中需要多次运行的某一段相对独立的程序段可以用子程序的形式编写,主程序中多次调用,可以简化程序和开发工作量。
2)按照相对独立功能模块化程序设计:
按照相对独立功能自成一个子程序模块,复杂的程序由若干个模块(子程序)组成。
5、以上四种结构组成的复杂结构
配图:
4-3-1顺序结构
已知寄存器BL中有二位BCD数。
编程送CRT显示。
(zlgc3.asm)
ASSUMECS:
COD
MOVDL,BL
MOVCL,4
SHRDL,CL
ORDL,30H
MOVAH,2
INT21H
ANDDL,0FH
ADDDL,30H
MOVAH,4CH
ENDSTART
DOS功能调用
;
顺序程序例子。
DOS功能调用实例
例2:
编程使电脑显示“WHATISYOURNAME?
”,然后,用户输入自己的英文名字xxx(必须三个字符),电脑显示”WELCOMEYOU,Mrxxx”。
(exmp0.asm)
DATSEGMENT
MSG1DB'
WHATISYOURNAME?
'
0AH,0DH,24H
MSG2DB0AH,0DH,'
WELCOMEYOU,Mr$'
BUFDB4DUP(24H)
DATENDS
CODSEGMENT
ASSUMECS:
DAT
BEGIN:
MOVAX,DAT
MOVDS,AX
MOVAH,9
MOVDX,OFFSETMSG1
MOVAH,1
MOVBUF,AL
MOVBUF+1,AL
MOVBUF+2,AL
LEADX,MSG2
MOVDL,BUF
MOVDL,BUF+1
MOVDL,BUF+2
CODENDS
ENDBEGIN
4-4分支结构程序设计
分支结构是计算机软件具有分析判断能力的基础。
它根据某个条件是否满足(成立),决定程序的走向,选择不同的处理方法和过程。
分支控制由条件转移指令实现,所以分支程序设计的关键是选择分支的判断依据和如何将此依据转化为状态标志的变化。
分支机构举例:
将内存中的二进制数据转换成二位十六进制数显示。
(exmp2.asm)
DATSEGMENT
STRINGDB1AH,2BH,56H,78H,90H,0A2H,0B3H
DATENDS
COD,DS:
MOVSI,NUM;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理