微机原理实验报告(排序,计算)
- 格式:docx
- 大小:5.30 MB
- 文档页数:13
《微机原理与接口技术实验报告》
汇编语言循环结构程序设计
一、实验目的
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