微机原理:顺序、分支、循环、子程序设计

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

[公司名称]

实验二

顺序、分支、循环、子程序设计微机原理上机实验

[作者姓名]

[日期]

预习报告

零、相关知识

1,LEA指令和MOV指令的区别

一、顺序结构

计算m*n-w,最终结果保存在AX

其中m=12, n=12, w=4

最终结果为AX=008CH=140D

name "sequence strcture"

org 100h

MOV AX, 1000H

MOV DS, AX

MOV SI, 1000H

MOV [SI], 12

MOV [SI+1], 12

MOV [SI+2], 4

MOV AL, [SI]

MOV BL, [SI+1]

MUL BL

MOV BX, 0

MOV BL, [SI+2]

SUB AX, BX

HLT

二、分支结构

在DS数据段偏移地址为DATA开始的顺序80个单元中,存放着某班80个同学的微机原理考试成绩。现欲编程序统计>=90、89~70、69~60和<60分的人数,并将统计的结果存放在当前数据段偏移地址为BUFFER的顺序单元中

name “branch structure”

START:

MOV DX, 0000H

MOV BX, 0000H

MOV CX, 80

LEA SI, DATA

LEA DI, BUFFER

GOON:

MOV AL, [SI]

CMP AL, 90

JC NEXT3

INC DH

JMP STOR

NEXT3:

CMP AL, 70

JC NEXT5

INC DL

JMP STOR

NEXT5:

CMP AL, 60

JC NEXT7

INC BH

JMP STOR

NEXT7:

INC BL

STOR:

INC SI

LOOP GOON

MOV [DI], DH

MOV [DI+1], DL

MOV [DI+2], BH

MOV [DI+3], BL

HLT

三、循环结构

在DS所决定的数据段,从偏移地址BUFFER开始顺序存放100个无符号16位数。现欲编程序将这100个数按大小顺序排序(以下程序使用的是快速排序算法,也可以使用冒泡排序,嵌套两层循环)

name “circle structure”

LEA DI, BUFFER

MOV BL, 99

NEXT0:

MOV SI, DI

MOV CL, BL

NEXT3:

MOV AX, [SI]

ADD, SI, 2

CMP AX, [SI]

JNC NEXT 5

MOV DX, [SI]

MOV [SI-2], DX

MOV [SI], AX

NEXT5:

DEC CL

JNZ NEXT3

DEC BL

JNZ NEXT0

HLT

四、子程序

编写程序,完成将一组BCD数转换成16位二进制数。(BCD数转换成16位二进制数用子程序实现)

下面提供三种方案,分别用寄存器、储存器和堆栈传递参数

①使用寄存器传递参数

name "text subprogram using register"

STACK SEGMENT STACK

DB 256 DUP(?)

STACK ENDS

DATA SEGMENT

BCD1 DB 07H, 06H, 07H, 02H, 03H

LENG1 DB 5

RESULT DW ?

DATA ENDS

CODEM SEGMENT

ASSUME CS:CODEM, DS:DATA, SS:STACK

START:

MOV AX, DATA

MOV DS, AX

LEA SI, BCD1

MOV CX, LENG1

CALL FAR PTR BCD-16B

MOV RESULT, DX

MOV AH, 4CH

INT 21H

CODEM ENDS

CODES SEGMENT

ASSUME CS:CODES

;the part of subprogram

BCD-16B PROC FAR

PUSH BX

PUSH AX

ADD SI, CX

MOV DX, 0

BCDL:

DEC SI

PUSH CX

MOV AL, [SI]

AND AL, 0FH

CBW

MOV BX, AX

MOV AX, DX

MOV CX, 10

MUL CX

MOV DX, AX

ADD DX, BX

POP CX

LOOP BCDL

POP AX

POP BX

RET

BCD-16B ENDP

CODES ENDS

END START

②使用储存器传递参数

name "text subprogram using store" STACK SEGMENT STACK

DB 256 DUP(?)

STACK ENDS

DATA SEGMENT

BCD1 DB 07H, 06H, 07H, 02H, 03H

ADSEG DW ?

ADOFST DW ?

LENG1 DW ?

RESULT DW ?

相关文档
最新文档