微机原理五类常用程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

五类常用程序:传输数据求最大最小值统计正负数排序加法程序

存储器清零或置FF

1.1将1000H-1063H中的各字节内容清0(或置FFH)

1.2传输数据块

将1000H-1063H中的字节内容传递到4000H-4063H

2.找最大值最小值

从2500H-2563H中存放着数据,把其中的最大值找出来,

地址存放在3000H中

3.统计负数正数

从2100H 开始存放100个无符号数,统计有多少个正数,

多少个负数。负数个数存入2200H

4.1求1AH+02H+31H+14H+2FH+06H=???

数据1AH、0FH 、24H、4EH、18H、2DH

放在[3000H]- [3005H]处

4.2求十进制计算

25 74 89 67

+ 49 78 64 95

数据25 74 89 67放在[2400]- [2403]

数据49 78 64 95放在[2500]- [2503]

4.3将BLOCK单元开始的10个单元数相加,结果存放入BLOCK单元。若相加过程中发生溢出,停止运算,并在DL中设置溢出标志FF.

5.冒泡排序方法

5.1字节型变量V AR1、V AR2和V AR3存放有3个无符号数,将其中的内容按从大到小重新排列。

解:经重新排列后,V AR1的值最大,V AR3的值最小。由于变量中存放的数据为无符号数,因此应该采用JA、JAE、JB、JBE等指令。

编程思路:通过在三个数中找出最大值,将它与V AR1单元进行交换;然后对剩余的两个数进行比较,将较大值存放在V AR2中。汇编语言程序如下:

5.2存放在2040H-2045H中的字节数据由大到小排列

1.1将1000H-1063H中的各字节内容清0(或置FFH)

MOV SI, 1000H

MOV CX, 0064H

XOR AL,AL

L1: MOV [SI], AL

INC SI

DEC CX

JNZ L1

HLT

1.2传输数据块

将1000H-1063H中的字节数据内容传递到4000H-4063H

MOV SI, 1000H

MOV DI, 4000H

MOV CX, 0064H

L1: MOV AL, [SI]

MOV [DI], AL

INC SI

INC DI

DEC CX

JNZ L1

HLT

2. 从2100H 开始存放100个无符号数,求最大值并存入单元2200H

MOV SI, 2100H

MOV CX, 0064H

XOR AL,AL

L1: CMP AL, [SI]

JNC L2

MOV AL , [SI]

L2: INC SI

DEC CX

JNZ L1

MOV [2200], AL

HLT

如果求最小值

XOR AL,AL 改为MOV AL,0FFH

JNC L2 改为JC L2

或者MOV [SI], AL

INC SI

相应MOV CX, 0063H

3.统计负数正数

从2100H 开始存放100个无符号数,统计有多少个正数,多少个负数。负数个数存入2200H MOV SI, 2100H

MOV CX, 0064H

XOR DL,DL

L1: MOV AL, [SI]

AND AL,AL(/AND AL, FFH/TEST AL, 80H)

JNS L2

INC DL

L2: INC SI

LOOP L1

MOV [2200],DL

HLT

LOOP L1可以改为

DEC CX

JNZ L1

求最大最小值JNC JC

求正负数用JS JNS

4.1 1AH+0FH +24H+4EH+18H+2DH=???0E计算

数据1AH、0FH 、24H、4EH、18H、2DH放在[3000H]- [3005H]处

参考程序:

MOV SI,3000H

MOV CX,0006H

XOR AL,AL

AA: ADD AL,[SI]

INC SI

DEC CX

JNZ AA

MOV [3040H] ,AL

HLT

4.2求十进制计算

25 74 89 67

+ 49 78 64 95

数据25 74 89 67放在[2400]- [2403]

数据49 78 64 95放在[2500]- [2503]

MOV SI,2400H

MOV DI,2500H

MOV BX,2600H

MOV CX,0004H

XOR AL,AL

AA:MOV AL,[SI]

ADC AL,[DI]

DAA

MOV [BX],AL

INC SI

INC DI

INC BX

LOOP AA

HLT

5.冒泡排序方法

5.1字节型变量V AR1、V AR2和V AR3存放有3个无符号数,将其中的内容按从大到小重新排列。

解:经重新排列后,V AR1的值最大,V AR3的值最小。由于变量中存放的数据为无符号数,因此应该采用JA、JAE、JB、JBE等指令。

编程思路:通过在三个数中找出最大值,将它与V AR1单元进行交换;然后对剩余的两个数进行比较,将较大值存放在V AR2中。汇编语言程序如下:

STACK SEGMENT STACK 'STACK'

DW 100H DUP(?)

TOP LABEL WORD

STACK ENDS

DA TA SEGMENT

V AR1 DB 46H ;先假设一组值,以便检验程序设计的正确性

V AR2 DB 15H

V AR3 DB 0A2H

DA TA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA,ES:DA TA,SS:STACK

START:

MOV AX, DA TA

MOV DS, AX

MOV ES, AX

MOV AX, STACK

MOV SS, AX

相关文档
最新文档