微机原理4章.docx

上传人:b****2 文档编号:2438774 上传时间:2022-10-29 格式:DOCX 页数:35 大小:555.38KB
下载 相关 举报
微机原理4章.docx_第1页
第1页 / 共35页
微机原理4章.docx_第2页
第2页 / 共35页
微机原理4章.docx_第3页
第3页 / 共35页
微机原理4章.docx_第4页
第4页 / 共35页
微机原理4章.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

微机原理4章.docx

《微机原理4章.docx》由会员分享,可在线阅读,更多相关《微机原理4章.docx(35页珍藏版)》请在冰豆网上搜索。

微机原理4章.docx

微机原理4章

《微机原理与应用》备课笔记B(第四章)

第11次上课内容.

第一部分指令观察

1、算术运算指令观察——zlgc1,zlgc2

2、逻辑运算指令观察——zlgc3

3、条件转移指令观察------zlgc4

第二部分

第四章汇编语言程序设计

4-1概述、

一、什么是汇编语言

汇编语言是用指令助记符、符号地址、标号等书写程序的语言。

特点:

易读、易写、易记,。

但是不如高级语言具有很好的通用性和可移植性,也不能像机器语言直接运行。

调试

运行程序

*.exe

目标程序

*.obj

编辑源程序

*.asm

正确

运行

连接

汇编

二、汇编语言上机过程

有错

4-2汇编语言基本语法

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)伪指令语句——属于说明性语句。

仅在汇编过程中起汇编管理和说明的作用,不产生目标代码。

实验二指令观察

1、算术运算指令观察——zlgc1,zlgc2

2、逻辑运算指令观察——zlgc3

3、条件转移指令观察------zlgc4

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、标号

标号的作用——标号代表“:

”后面指令所在内存地址,供程序控制类指令作为转移目标用。

标号的属性:

标号有三个属性:

段地址——SEGMENTBASE

段内偏移量——OFFSET

类型——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顺序结构

例1:

已知寄存器BL中有二位BCD数。

编程送CRT显示。

(zlgc3.asm)

CODSEGMENT

ASSUMECS:

COD

START:

MOVDL,BL

MOVCL,4

SHRDL,CL

ORDL,30H

MOVAH,2

INT21H

MOVDL,BL

ANDDL,0FH

ADDDL,30H

MOVAH,2

INT21H

MOVAH,4CH

INT21H

CODENDS

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:

COD,DS:

DAT

BEGIN:

MOVAX,DAT

MOVDS,AX

MOVAH,9

MOVDX,OFFSETMSG1

INT21H

MOVAH,1

INT21H

MOVBUF,AL

MOVAH,1

INT21H

MOVBUF+1,AL

MOVAH,1

INT21H

MOVBUF+2,AL

MOVAH,9

LEADX,MSG2

INT21H

MOVAH,2

MOVDL,BUF

INT21H

MOVDL,BUF+1

INT21H

MOVDL,BUF+2

INT21H

MOVAH,4CH

INT21H

CODENDS

ENDBEGIN

4-4分支结构程序设计

分支结构是计算机软件具有分析判断能力的基础。

它根据某个条件是否满足(成立),决定程序的走向,选择不同的处理方法和过程。

分支控制由条件转移指令实现,所以分支程序设计的关键是选择分支的判断依据和如何将此依据转化为状态标志的变化。

分支机构举例:

例1:

将内存中的二进制数据转换成二位十六进制数显示。

(exmp2.asm)

DATSEGMENT

STRINGDB1AH,2BH,56H,78H,90H,0A2H,0B3H

NUMEQU$-STRING

DATENDS

CODSEGMENT

ASSUMECS:

COD,DS:

DAT

START:

MOVAX,DAT

MOVDS,AX

MOVSI,NUM;

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1