微机原理实验报告(排序,计算)

  • 格式:docx
  • 大小:5.30 MB
  • 文档页数:13

下载文档原格式

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

《微机原理与接口技术实验报告》

汇编语言循环结构程序设计

一、实验目的

1. 理解各种指令的功能。

2. 进一步学习程序的调试。

二、实验内容:

1.

编制程序,对这组数进行排序,并输出原数据及排序后数据; 2.

利用DEBUG 调试工具,用D0命令,查看排序前后,内存数据的变化; 3.

去掉最大和最小的两个值,求出其余值的平均值,并输出最大值,最小值和平均值; 4.

用学过的压栈PUSH 和出栈POP 指令,将平均值按位逐个输出; 5.

将平均值转化为二进制串,并将这组二进制串输出。 6. 所有数据输出前要用字符串的输出指令,进行输出提示(如:zui da zhi shi : 300等),所有数据结果能清晰地显示在屏幕上。

三、程序流程图

四、程序清单

DATA SEGMENT

SR DB 100,?,50 DUP (?)

VAR DW 5 DUP (0)

AVG DW ?

TEN DW 10

P DW

3

D DW 2

X DW?

Y DW?

MESG1 DB 13,10,'PLEASE INPUT:$'

XS1 DB 13,10,'ORIGIN:$'

XS2 DB 13,10,'NOW:$'

XS3 DB 13,10,'MAX:$'

XS4 DB 13,10,'MIN:$'

XS5 DB 13,10,'AVG:$'

XS6 DB 13,10,'AVG2:$'

DATA ENDS

STACK SEGMENT

DW 100 DUP(?)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATA

MOV DS,AX

MOV ES,AX

MOV DX,OFFSET MESG1

MOV AH,09H

INT 21H

LEA DX,SR

CLD

MOV CX,5

LEA SI,SR

ADD SI,2

LEA DI,VAR

IN_LOOP:

MOV x, 0

MOV Y,0

_INX:

MOV AH, 01H

INT 21H

;-------------------------------- CMP AL, '0'

JB OKK

CMP AL, 3AH

JB SUB_30H

;-------------------------------- JMP OKK

;-------------------------------- SUB_30H:

SUB AL, '0'

MOV AH, 0

MOV Y, AX

MOV AX, x

MUL TEN

ADD AX, Y

MOV x, AX

JMP _INX

;-------------------------------- OKK:MOV AX,x

STOSW

INC SI

LOOP IN_LOOP

;-------------------------ORIGIN--- MOV DX,OFFSET XS1

MOV AH,09H

INT 21H

MOV CX,5

LEA SI,VAR

LOOPXS1:CALL XS

LOOP LOOPXS1

;-------------------------------

CLD

MOV CX,4

MOV DX,1

LOOPPX: CALL PX

INC DX

LOOP LOOPPX

;----------------------------NOW-- MOV DX,OFFSET XS2

MOV AH,09H

INT 21H

MOV CX,5

LEA SI,VAR

LOOPXS2:CALL XS

LOOP LOOPXS2

;----------------------------MAX--- MOV DX,OFFSET XS3

MOV AH,09H

INT 21H

LEA SI,VAR

ADD SI,8

CALL XS

;-----------------------------MIN--- MOV DX,OFFSET XS4

MOV AH,09H

INT 21H

LEA SI,VAR

CALL XS

;-----------------------AVG------ MOV DX,OFFSET XS5

MOV AH,09H

INT 21H

MOV AX,[SI]

MOV BX,[SI+2]

ADD AX,BX

MOV BX,[SI+4]

ADD AX,BX

CWD

IDIV P

LEA SI,AVG

MOV [SI],AX

CALL XS

;----------------------AVG2---------- MOV DX,OFFSET XS6

MOV AH,09H

INT 21H

MOV CX,16

LEA SI,AVG

MOV AX,[SI]

LPAVG: CWD

SHR AX,1 ;to CF

JB ONE

MOV DX,0

JMP PP

ONE: MOV DX,1

PP: PUSH DX

LOOP LPAVG

MOV CX,16

AVG2XS:POP DX

ADD DL,30H

MOV AH,02H

INT 21H

LOOP AVG2XS

EXIT: MOV AH,4CH

INT 21H

XS PROC

LODSW

MOV BX,1

ZL1: CWD

IDIV TEN

PUSH DX

CMP AX,0

JZ ZL2

INC BX

JMP ZL1

ZL2: POP DX