微型计算机原理及接口技术_第1页
微型计算机原理及接口技术_第2页
微型计算机原理及接口技术_第3页
微型计算机原理及接口技术_第4页
微型计算机原理及接口技术_第5页
已阅读5页,还剩148页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微型计算机原理

及接口技术

授课教师:

第4章'4.4D0S与BIOS的调用

441述

H-

DOS是微型计算机磁盘操作系统(DiskOperationSystem),操作系

统是用以控制和管理计算机的硬件资源、方便用户使用的程序的集

合。由于这些软件程序放在硬盘或软盘上,而且主要功能是进行文

件管理和输入、输出设备管理,故而称为磁盘操作系统。磁盘操作

系统是入和机器交互的界面,用户通过操作系统使用和操作计算机.

DOS所有软件使用基础的平台。

第4章4.4D0S与BIOS的调用

4.述

DOS由三个层次的程序文件及一个BOOT引导程序构成。三个层

次模块文件:

10.SYS输入/输出管理系统

MSDOS-SYS文件管理系统

COMMAND.COM命令处理系统

DOS和ROMBIOS提供了大量的可供用户直接使用的系统服务程序。

ROMBIOS(ROMBasicInputandOutputSystem)是固化在只读存

储器ROM中基本输入/输出的程序。它直接可对外部设备进行设备升

级的控制,包括系统测试、初始化引导程序、控制I/O设备的服务

程序等。E

第4章4.4D0S与BIOS的调用

一般说来,用户可以用四种方式控制PC机的硬件:

□第一种,应用高级语言的相应的功能语句进行控制。

□第二种,应用DOS提供的功能程序来控制硬件。

第三种,应用ROMBIOS的程序控制硬件,这是低层次控制,要求编

程者对硬件有相当深入了解。

第四种,直接使用汇编语言编程进行控制,但是,要求编程者对

I/O设备的地址功能比较熟悉。

E匚

□4.4D0S与BIOS的调用

□4.4.2DOS系统功能调用

MS-DOS操作系统为程序设计者提供了可以直接调用的软中断处理

□程序,每一个中断处理程序完成一个特定的功能操作,依据编程需

□要选择适当的处理程序,编程者不再重新编写程序。这些功能处理

程序,使用的是INTn软中断指令,每执行一种类型码n的不同的软

中断指令,就执行一个中断处理程序。

这类功能程序的主要功能是:

①磁盘的读/写控制

②内存管理、文件操作和目录管理

③基本输入/输出(对键盘、打印机和显示器控制),另外还有日期、

时间等。

第4章4.4D0S与BIOS的调用

4.4.2D0S系统功能调用

当类型码n=05H-1FH,调用ROMBIOS中的处理程序。

类型码n=20H—3FH,调用的是DOS的中断处理程序。

INT21H是一个大型的中断处理程序,其中有大约100多种功能中断

处理程序,可由程序设计者调用。

INT21H软中断指令对应的功能子程序调用称为DOS系统功能调用。

E匚

第4章4.4D0S与BIOS的调用

一、DOS软中断调用

赢萩子面藁法蝠靛茄薮芝就总.........................

其中,入口参数是使用该调用必须具备的条件;出口参数是表示软

□中断程序执行结果放在何处或执行该操作处理的特征。

DOS中断调用方法:

按DOS中断规定,用指令写入口参数,然后执行INTn指令,执行完

毕后,依据结果进行分析及处理。

执行INTn指令,即分析处理

设置入

执行中断服务程序,出口参数

口参数

最后执行IRET

□4.4D0S与BIOS的调用

□DOS软中断

软中断功能入口参数出口参数

INT20H程序正常退出

INT21H系统功能调用AH=功能号相应处理结果参数

INT22H结束退出

INT23HCtl+break中断退出

INT24H出错退出

INT27H驻留退出

INT25H的CX、DXCF=1出错

DS:BX、AL

INT25H写盘CX、DX、CF=1出错

DS:BX、AL

第4章4.4D0S与BIOS的调用

二、DOS系统功能调用INT21H

INT^IH最早凝箕茄)赢菽],皤,不玛茁时最“章:'KA

子功能程序分别予以编号,称为功能号。每个功能程序完成一种特

定的操作和处理。

主要功能包括:设备管理、目录管理、文件管理等。

应用INT21H系统功能调用方法:

MOVAL,OAH

①入口参数送指定的寄存器或内存MOVAH,02H

②功能号送AH中。INT21H;换行

③执行INT21H软中断指令。

MOVAH,4CH

INT21H;

4.4D0S与BIOS的调用

1.键盘输入并显示(1号功能调用)

功能:等待标准输入设备送入一个字符,并放到

寄存器AL中,不需要入口参数。AL中放字符的

ASCH码,并且CRT屏幕上显示。

MOVAH,1

INT21H

4.4D0S与BIOS的调用

2.键盘输入但不显示输入字符(8号功能调用)

功能:8号功能调用,系统将进行键盘扫描,等

待键按下,一旦有键按下,将字符ASCH码读入,

放入AL中,但不在CRT屏幕上显示。

MOVAH,8

INT21H

□4.4D0S与BIOS的调用

□3.CRT屏幕显示一个字符(2号功能调用)

□功能:入口参数:待显示的字符ASCH码放入DL

□中,功能号送AH。其功能把DL中的字符在屏幕上

显示出来。

例如要显示字符'A,程序段:

MOVDL,'A'

MOVAH,02H

INT21H

4.4D0S与BIOS的调用

4.打印输出(5号眇调用)

功能:入口参数:将要在打印机上打印的字

ASCH码放入DL中,5号功能调用即把字符输出到打

印机上予以打印。

例如:

MOV,DL,W

MOVAH,05H

INT21H

执行后,打印机上即打印出字符A。

多4制4.4D0S与BIOS的调用

口5.CRT屏幕显示字符串符号(9号可能调用)

功能:待显示的字符串符号(ASCH

码),定义在DS段且以'$,字符结束,

.□把段地址放入DS中,偏移地址放入

DX中,利用9号功能调用,可把字符

串符号显示在屏幕上。

□4.4D0S与BIOS的调用

DATASEGMENT

□BUFDB6HOWDOYOUDO?9,OAH,ODH,'$'

DATAENDS

CODESEGMENT

MOVAX,DATA

MOVDS,AX执行程序,在屏幕上显示:

“HOWDOYOUDO?”

MOVDX,OFFSETBUF字符串符号。

MOVAH,09H

INT21H

CODEENDS

4.4D0S与BIOS的调用

6.字符串输入功能调用(0AH功能调用)

功能:从键盘接收字符并且放入到内存缓冲区。

第一个字节:予留字节:第三个字节:

允许最多输入在输入结束接收字符

的字符数后输入字符ASCCH码

的个数

第4章4.4D0S与BIOS的调用

6受符串输入功能调用(OAH*能调用)

功能:从键盘接收字符并且放入到内存缓冲区。

要求执行前:(1)先定义一个输入缓冲区,缓冲区内第一个字

节定义为允许最多输入的字符个数,个数应包括回车符ODH在

内,不能为。值。第二个字节保留,在执行程序完毕后存入输入

的实际的字符个数。从第三个字节开始存入从键盘上接收的字

符的ASCH码。

(2)若实际输入的字符个数少于定义的最大的字符个数,则缓

冲区其他单元自动清0值。若实际输入的字符个数多于定义的字

符个数,其后输入的字符丢弃不用,且响铃示警,一直到键入

回车(CR)为止。

第4皂4.4D0S与BIOS的调用

6受符串输入功能调用(OAH*能调用)

整个缓冲区的长度等于最大字符个数再加2。

调用时要求DS:DX指向缓冲区的首地址,即入口参数为段地

址放在DS中,缓冲区起始的偏移地址放入DX中。

□4.4D0S与BIOS的调用

□DATASEGMENT

BUFDB25;缓冲区长度

□ACTHARDB?;保留单元,存放输入的实际字符个数

□CHARDB25CUP(?);定义25个字节存储空间:

DB$

DATAENDS

CODESEGMENT

MOVDX,OFFSETBUF

MOVAH,OAH

INT21H

CODEENDS

4.4D0S与BIOS的调用

7.返回DOS系统功能调用(4CH调用)

功能:4cH功能调用,其操作是终止当前程序的运行,并把

控制权交给调用的程序,即返回DOS系统,屏幕出现DOS提示

符。

如C:\>,等待DOS命令。

格式:MOVAH,4CH

INT21H

第4章4.4D0S与BIOS的调用

8.直接控制台输入输出(6号功能调用)

□功能:从标准输入设备输入字符,也可以向屏幕上输出字符,

但不检查CtrLBreak组合键是否按下。

(1)当向DL送入一个OFFH时,表示从键盘输入字符。若

标志ZF=O,AL中放入字符的ASCH码;若ZF=1,表示

无键按下。这种调用检测扫描键盘有无键按下,但不等

待键盘输入。

例如:MOVDL,OFFH

MOVOAH,6H

INT21H

4.4D0S与BIOS的调用

功能:从标准输入设备输入字符,也可以向屏幕上输出字符,

但不检查CtrLBreak组合键是否按下。

(2)假如DL/0FFH,表示向屏幕输出显示,DL中要放的

是待显示字符的ASCH码值。

例如:MOVDL,A9

MOVAH,6H字符A显示左

CRT屏幕上。

INT21H

第4壑4.4DOS与BIOS的调用

9.检查键盘的工作状态(OBH功能调用)

功能:调用此功能用以检查是否有键盘输入,若有键按下,

则使AL=OFFH,若无键按下,则AL=00H。对于利用操作键盘

退出循环或使程序结束这种调用是很方便实用的。

LOP:ADDAL,BL

MOVAH,OBH

INT21H;键扫描:无键入AL=00H;有键入AL=FFH

ADDAL,01H

JNZLOP;有键入,则退出循环

RET

第4章4.4.3R0MBI0S中断调用

BIOS(BasicInut/OutputSystem,基本输入/输出系

统)是固化在只读存储器ROM中的一系列输入/输出服务程

序,它存放于内存的高地址区域内,处理系统中的全部内

部中断,还提供了用户常用的I/O接口的控制驱动程序,

例如键盘、显示器、磁盘和打印机等。BIOS采用模块化

结构,每个功能模块的入口地址都存于中断向量表中。中

断调用通过软中断指令INTn实现,n为中断类型码。

4.4.3ROMBIOS中断调用

ROMBIOS的调用方法与DOS系统功能调用方法相类似。

①置功能号一>AH

②置入口参数。

③执行INTn。

④分析出口参数及状态。

4.4.3ROMBIOS中断调用

使用ROMBIOS中断调用的优越性在于:

(1)虽然BIOS中断调用程序比调用DOS中断程序要复杂,但

运行速度快。,功能更强。

(2)DOS的中断功能仅在DOS环境下适用,而ROMBIOS的

功能调用不受任何操作系统的约束。

(3)某些功能仅ROMBIOS具有。

4.4.3ROMBIOS中断调用

1.键盘输入(类型码为16H的中断调用)

一中断调用有三个功能,功能号为0;1、2,且必须把

功能号放在AH中。

..................................

入口参数为AH=O,INT16H调用,从键盘读入字符,并

且放在AL寄存器中。执行时,等待键盘输入,一旦输

入,字符的ASCH码放入AL中。

若AL=O,则AH为键入的扩展码。

格式:MOVAH,OH

INT16H

4.4.3ROMBIOS中断调用

1.键盘输入(类型码为16H的中断调用)

(2)功能号01H调用

功能是用来查询键盘缓冲区,对键盘扫描,但不等待,

若有按键操作(即键盘缓冲区不空),则ZF=0,AL中存

放的是键入的ASCH码,AH中存放键入字符的扩展码。

若无键按下,则标志位ZF=1。

格式:MOVAH,01H

INT16H

□4.4.3ROMBIOS中断调用

□1.键盘输入(类型码为16H的中断调用)

(3)功能号02H调用

功能是检查键盘上各特殊功能键的状态。执行后,各种

特殊功能键的状态放入AL寄存器中。

格式:MOVAH,02H

INT16H

AL

□4.4.3ROMBIOS中断调用

□1.键盘输入(类型码为16H的中断调用)

例如程序段

MOVAH,02H

INT16H

ANDAL,00000100B;检查Ctlr键是否按下

JNZCtrl-ON

Ctrl-ON:........

□4.4.3ROMBIOS中断调用

□2.打印机输出(INT17H)

:吊输i商看三个,能,,能号茄、1、2

□•.....

(1)0号功能

入口参数为AL中放入字符ASCII码,,DX中放打印机(0-2)。

MOVAL,'A'

MOVDX,01H

MOVAH,0

INT17H

操作功能是打印一个字符,且返回打印机的状态到AH中。

□第4重4.4.3ROMBIOS中断调用

□2.打印机输出(INT17H)

□打印机的状态字意义如下:

D7=1打印机处于“忙“状态。打印机目前正在打印或正在接

□收数据等

D6=1打印机已接收数据,通知CPU可发送下一个数据

D5=1打印纸空

D4=1打印机已联机

D3=1表示打印机出错

D2〜D1未用,无意义

DO表示打印机超时错。打印机发回忙信号过长,CPU不

能再给它发送字符

第4章4.4.3ROMBIOS中断调用

2•打印机输出(INT17H)

(2)1号功能

MOVAH01H

INT17H

初始化打印机,并返回打印机状态到AH中。

第4章4.4.3ROMBIOS中断调用

2.打印机输出(INT17H)

(3)2号功能

MOVAH,02H

INT17H

返回打印机状态到AH中。

第4章4.4.3ROMBIOS中断调用

3.CRT显示器显示ROMBIOSINT10H中断调用

用以控制显示器显示,功能强大。主要包括设

置显示方式,设置CRT屏幕光标的大小与位置,

显示字符及图形,设置调色板等。但用汇编语言

写程序过长,一般采用高级语言。

4.5汇编语言程序设计

软件程序设计采用结构化程序设计方法,这种设计方法

是指程序的设计、编写和测试按一定规范的组织形式来进行

而不能由编程者随心所欲,从而满足高质量的标准化软件程

序的要求。

□第4氢4.5汇编语言程序设计

一个高质量的软件程序应具备的条件:

①运行结果正确。

②具有良好的结构,清晰易读。

③执行速度快。

④占用内存空间应压缩到合理的范围之内。

第4章4.5汇编语言程序设计

结构化程序必须满足以下要求:

(1)采用模块化结构:

每一个模块都是由三种基本结构组成,并且只有一个入口和

一个出口,不含死循环和死语句。

三种结构是顺序结构、条件分支结构和循环结构。

(2)可以有控制地使用无条件转移语句。程序要加以必要的注释,

以增加程序的可读性。

(3)要采用自顶向下、逐步细化和逐步求精的设计方法开发程序,

能方便地对源程序模块进行组装及调试。

4.5.1汇编语言源程序的框架结构

□NAME模块名(可省略)

□EQU符号定义区(可依据需要而定)

EXTRN外部符号名说明(依实际需要而定)

PUBLIC公共符号名说明(依实际需要而定)

4.5.1汇编语言源程序的框架结构

••

数据段名(如DATA)SEGMENT;参数(依据实际要求而定,可省略)

变量定义

预置存储空间

数据段名(如DATA)ENDS

堆栈段名(如STACK)SEGMENT参数(依实际要求而定)

预置堆找空间

堆栈段名(如STACK)ENDS

□4.5.1汇编语言源程序的框架结构

代码段名(如CODE)SEGMENT参数(依实际需要而定)

□ASSUME段寄存器指派

START:MOVAX,DATA;段地址装填

□MOVDSAX

MOVAX,STACK

□MOVSS,AX

主程序体

MOVAH,4CH

INT21H

过程名1PROC类型说明

过程体1

过程名1ENDP

过程名2PROC类型说明

过程体2

过程名2ENDP

代码段名(如CODE)ENDS

ENDSTART

NAME模块名(可省略)

EQU符号定义区(可依据需要而定)

EXTRN外部符号名说明(依实际需要而定)

PUBLIC公共符号名说明(依实际需要而定)

数据段名(如DATA)SEGMENT;参数(依据实际要求而定,可省略)

变量定义

预置存储空间

数据段名(如DATA)ENDS

堆栈段名(如STACK)SEGMENT参数(依实际要求而定)

预置堆找空间

堆栈段名(如STACK)ENDS

代码段名(如CODE)SEGMENT参数(依实际需要而定)

ASSUME段寄存器指派

START:MOVAX,DATA;段地址装填

MOVDSAX

MOVAX,STACK

MOVSS,AX

主程序体

MOVAH,4CH

INT21H

过程名1PROC类型说明

过程体1

过程名1ENDP

过程名2PROC类型说明

过程体2

过程名2ENDP

代码段名(如CODE)ENDS

ENDSTART

第4章4.5汇编语言程序设计

【例4.51多字节压缩BCD码加法程序。变量FIRST和

SECOND各存放着4个字节的压缩BCD码,求二者相加

之和,放入SUM开始的存储单元(假定和仍为4个字节

的BCD码),编程实现。

多,制4.5汇编语言程序设计

I-12•..........•••

■NAMEMADD

口DATASEGMENT

FIRSTDB11H,22H,33H,44H;压缩BCD码被加数

SECONDDB55H,66H,77H,33H;压缩BCD码加数

SUMDB20DUP(?);和存放单元

DATAENDS

STACKSEGMENTSTACK'STACK'

SATDB100DUP(?);预置堆找区空间

TOPEQULENGTHSTA

STACKENDS

CODESEGMENT

ASSUMCS:CODE,DS:DATA,SS:STACK,ES:

4.5.2程序设计基本步骤

对于给定的课题进行程序设4,”一般应按下述步骤进行

■1.分析课题

2,确定算法

3.画出流程图

4,存储器资源分配

5,编写程序

6.上机调试

4.5.3汇编语言程序设计应注意的问题

1.程序模块化。

2•程序正确完整,具有容错功能。

3•算法的可靠性和合理性。

4.实时性要求高的工程控制程序,要充分考虑软件执行速度。

••

4.5.4程序的基本结构与基本程序设计

基本程序结构有三种:

顺序结构、分支选择结构和循环结构。

任何一个复杂问题的设计,基本上都可

以由上述三种基本逻辑结构综合而成。

第4章4.5.4程序的基本结构与基本程序设计

一、顺序结构与简单程序设计

顺序结构程序又称简单程序,

这种程序是按指令的顺序执行的,

指令指针IP内容为线性增加,流

程图由一个一个的处理框构成,

中间无分支、无转移、无循环,

程序本身逻辑结构简单。应用的

指令多为传送类、运算类和位移

类指令。

.

4.5.4程序的基本结构与基本程序设计

【例4.6]编写计算Z=(X*X-3*Y)/2的程序。设X、Y均为单字节整

数,结果Z仍为1个字节。

•••••••••••••••••・・••••••••____

开始

计算x*x

计算3*Y

计算(X*X-3*Y)12

结束

第4氢4.5.4程序的基本结构与基本程序设计

••••••••・・••,

DATASEGMENT

XDB25

YDB32

.zDW?

・DATAENDS

□4.5.4程序的基本结构与基本程序设计

CODESEGMENT

□ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA;初始化

□MOVDS,AX

MOVAL,X

□MULAL;AX=X*X

MOVBX,0

MOVBL,Y

ADDBL,BL

ADCBH,0

ADDBL,Y;3*Y

SUBAX,BX;X2-3Y.

SHRAX,1;(X2-3Y)/2.

MOVZ,AX;保存结果!

MOVAH,4CH

INT21H;返;回DOS

CODEENDS

ENDSTART

第4章4.5.4程序的基本结构与基本程序设计

[例4.7]在存储变量DAT1开始有两个字节的

无符号加数,在存储变量DAT2开始有两个字DAT15EH

节的无符号被加数,求两个数和放入DAT3单

89H

元中,设二进制数在存储单元存放的顺序,

低字节数放在低地址上,高字节数放在高地

址上。DAT240H

OAH

分析:多字节相加,应先从低字节开始相加,

然后高字节相加。

DAT3

□4.5.4程序的基本结构与基本程序设计

CODESEGMENT

ASSUMEOS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX

MOVSL0;位移量初值

MOVAL,DAT1[SI];取被加数

ADDAL,DAT2[SI];二数相加

MOVDAT3[SI],AL

INCSI;调整位移量

MOVAL,DAT1[SI];取被加数高位

ADCAL,DAT2[SI];带进位加

MOVDAT3[SI],AL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

第4章4.5.4程序的基本结构与基本程序设计

0

TABL

2.查表程序1

求平方值的程序如下。

【例4.8]内存中自TABL开9

始的16个单元中连续存放自16

然数。〜15的平方值,任意给

定一个数X(其值O=vX=<15)

在XD单元,求得平方值放入

YD单元中。255

XD

YD

第4邕454程序的基本结构与基本程序设计

NAMEMYPROG

DATASEGMENT

TABLDB0,1,4,9,16,25,36,49;定义平方表

DB64,81,100,121,144,169,225

XDDB?

YDDB?

DATAENDS

STACKSEGMENTSTACK'STACK'

STADB50DUP(?)

TOPEQULENGTHSTA

STACKENDS

□4.5.4程序的基本结构与基本程序设计

CODESEGMENT

□TABL

ASSUMECS:CODE,DS:DATA,SS:STACK

START:MOVAX,DATA

MOVDS,AX

MOVAX,STACK

MOVSS,AX

MOVSP,TOP

MOVBX,OFFSETTABL;置平方表地址指针

N“CY7A”A

MOVAL,XD;给定单元中的X数

XLAT

MOVYDAL;取平方值到AL中

;存放平方值'

XD

MOVAH,4CH;返回DOS'

INT21HYD

CODEENDS

ENDSTART

第4章4.5.4程序的基本结构与基本程序设计

二、分支选择结构程序(简称分支程序)

□在实际的程序设计中,常常会遇到各种条件判断和比较

□操作:“相等”或“不相等”;“大于”或“小于”;“满足

条件”或不满足条件等。依据给定的条件进行判断作出不同

的处理,执行不同的程序段。每一种处理程序称为一个分

支,一次判断产生两个分支,多次判断产生多个分支,这

样就构成了分支结构程序。

4.5.4程序的基本结构与基本程序设计

二、分支选择结构程序(简称分支程序)

IF....THEN..…ELSE语句CASE语句

0

第4章4.5.4程序的基本结构与基本程序设计

二、分支选择结构程序(简称分支程序)

分支程序的两个要素:

□(1)判断:依据运算结果影响状态标志位,使用条件转移指

□令使程序产生分支,当条件满足时,改变程序走向发生转

移,否则按指令顺序执行。但是特别注意,条件判断前,

一定要进行必要的运算,用来影响标志寄存器的标志位,

标志位反映了运算的结果和特征。

(2)转移:主要由条件转移指令来实现(也可以应用无条件转

移指令)。

4.5.4程序的基本结构与基本程序设计

二、分支选择结构程序(简称分支程序)

・••••••••••••••••••••••••••♦•・・・•♦♦•・•••

【例4.9]比较存储单元中的两个8位无符号数,大者

放在AL寄存器中。已知存储变量的偏移地址已经放在

BX中,其对应的程序段如下:

4.5.4程序的基本结构与基本程序设计

二、分支选择结构程序(简称分支程序)

MOVAL,[BX]

INCBX

CMPAL,[BX]

JAEBIGER;前元素>=后元素,转

EXCH:MOVAL,[BX];否则,取后元素到AL

BIGER:...............

第4章4.5.4程序的基本结构与基本程序设计

二、分支选择结构程序(简称分支程序)

[例4.10]数据区中进行数据块传送,源数据块BL0CK1,目

的数据块BL0CK2,但源数据块和目的数据块有地址重叠,

在传送前必须进行判别,决定使用增址传送,还是减址传

送,利用串传送指令编写程序。

第.

4章

□_】

LBL0CK2

□_LOW

□_

>*BLOCK1

□_

ABLOCK2

HIGH

BL0CK2BLOCK1

第4皂

□•DATASEGMENT

•;数据区

•STRGDB1000DUP(?)

□・BLOKIEQUSTRG+5;源块首地址

•・

BLOIK2EQUSTRG+10;目的块首址

BLENGEQU100;数据块长度

DATAENDS

100字节

第4皂

□•DATASEGMENT

•;数据区

•STRGDB1000DUP(?)

□・BLOKIEQUSTRG+10;源块首地址

•・

BLOIK2EQUSTRG+5;目的块首址

BLENGEQU100;数据块长度

DATAENDS

100字节

CODESEGMENT

ASSUMECS:CODE,DS:DATA,ES:DATA

START:MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVCX,BLENG;设置计数器

MOVSLOFFSETBLOKI;指向源块

MOVDI,OFFSETBLOCK2;指向目的块

CLD;DF=0增址方式

PUSHSI

ADDSI,BLENG-1;得源块末地址

CMPSI,DI;源数据块末地址与目的数据块的起始地址比较

POPSI;恢复源数据块地起始地址到SI

JBGO;小于则转移

STD;减址传送

ADDSLBLENG-1;SI指向源数据块末地址

ADDDI,BLENG-1;DI指向目的数据块的末地址

GO:REPMOVSB

MnvAH.ACH

CODESEGMENT

ASSUMECS:CODE,DS:DATA,ES:DATA

START:MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVCX,BLENG;设置计数器

MOVSLOFFSETBLOKI;指向源块

MOVDI,OFFSETBLOCK2;指向目的块

CLD;DF=0增址方式

PUSHSI

ADDSLBLENG-1;得源块末地址

CMPSI,DI;源数据块末地址与目的数据块的起始地址比较

POPSI;恢复源数据块地起始地址到SI

JBGO;小于则转移

STD;减址传送

ADDSLBLENG-1;SI指向源数据块末地址

Annni.RIFNH.I.m格白曰的和提母的未世出卜

第4邕454程序的基本结构与基本程序设计

二、分支选择结构程序(简称分支程序)

□[例4.11]在以BLOCK开始的存储区域内存放着100个字

□节的8位带符号数,在该存储区域内找出其中最大的数和

最小的数,分别放在MAX和MIN单元中,编程实现。

□分析:由于100个8位带符号数,从第一个数开始逐个比较,

搜索其中的大数和小数,因为其中字节长度已知,可以用

个数作为循环控制的计数器。那么,每次比较得到一个大

数和小数,循环完毕,即可找到最大数和最小数。

AL:放大数

BL:放小数

开始

SI―数据偏移地址,CX—循环次数

MAX-AL

□AL—[SI],BL—[SI]

MIN—BL

□SI<-SI+1

结束

cx=o?

4•.5・.•4•程・序••的・•基■本■■结•■构•'与•・基••本・程・•序•・设•计••

□NAMEFOUND

DATASEGMENT

□BUFDB-2,+5...,-128;定义100个字节数据

COUNEQU$-BUF;数据个数

MAXDB?;放最大值的存储单元

MINDB?;放最小值的存储单元

DATAENDS;数据段结束

STACKSEGMENTSTACK;堆栈区定义

STRDB64HDUP(?);堆栈区占64个单元

STACKENDS

4.5.4程序的基本结构与基本程序设计

MYCODESEGMENT;代码段

■ASSUMEDS:MYCODE,DS:DATA,SS:STACK

START:MOVAX,DATA

MOVDS,AX;DS赋初值

MOVAX,STACK

MOVSS,AX;ss赋初值

MOVSP,LENGTHSTR;设堆找指针

MOVCX,COUN-1;实际比较次数,

□MOVSI,OFFSETBUF;建立地址指针

□MOVAL,[SI];取第一个数放AL中,大数放AL内

MOVBL,[SI];取第一个数放BL中,小数放BL内

INCSI

LOP:CMPALJSI]

JGENEXT1小!_>=下一个数,不交换・

MOVAL,[SI];否则交换,大数在AL中

NEXT1:CMPBL,[SI];最小数与下一单元数比较

JLNEXT;最小值比较小,BLv二下一个数,不交换

MOVBL,[SI]

NEXT:INCSI

LOOPLOP;CX—CX・1,CX#O转LOP

MOVMAX,AL;存大数到MAX

MOVMIN,BL;存小数到MIN

第4

4.5.4程序的基本结构与基本程序设计

1

2.三路分支结构程序

[例4.12]符号处理函数。有一个符号函数.

1(X>0)

y=0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论