西电微机原理上机

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

4.37 (上机题)编写程序实现,将缓冲区BUFFER中的100个字按递增排序,并按下列格式顺

序显示:

数据1 <原序号>

数据2 <原序号>

……

算法流程图:

调试问题、心得体会:

通过这道题,熟悉了流程图画法,掌握了产生随机数,“冒泡法”排序,子函数编写调用等的基本过程,尤其对于中断调用,并利用ASCII码回显和对课本字节型数据“冒泡法”排序改进为字形排序的过程,是我受益匪浅。并且亲身实践了源程序的汇编、调试也连接。

问题:将字节型冒泡法直接应用于该题,导致出错,该题存储的是字型数据!

原因在于只是排列的AL中的数值,并不是产生的随机数!

同时对于字型与字节型在运算类指令中的应用还是有误,以及其他的一些小错误,应加以改善!

运行结果:

程序代码:

STACK SEGMENT STACK 'STACK'

DW 100H DUP(?)

TOP LABEL WORD

STACK ENDS

DATA SEGMENT

BUFFER LABEL WORD

X=17

REPT 100

X=(X+80)mod 43

DW X

ENDM

BUF DW 100 DUP(?)

DATA ENDS

CODE SEGMENT

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

MOV AX,DATA

MOV DS,AX

MOV ES,AX

MOV AX,STACK

MOV SS,AX

LEA SP,TOP

MOV CX,100

LEA SI,BUFFER

LEA DI,BUF

L1:

MOV AX,[SI]

INC SI

INC SI

MOV [DI],AX

INC DI

INC DI

LOOP L1

MOV CX,100

DEC CX

LEA SI,BUFFER

PUSH CX

ADD CX,CX

ADD SI,CX

POP CX

L2:

PUSH CX

PUSH SI

L3:

MOV AX,[SI]

CMP AX,[SI-2]

JAE NOXCHG

XCHG AX,[SI-2]

MOV [SI],AX

NOXCHG:

LOOP L3

POP SI

POP CX

LOOP L2

MOV CX,100

LEA SI,BUFFER L4:

MOV AX,[SI] CALL DISPAX ADD SI,2

CALL XIAOYU CALL XUHAO

CALL DAYU

CALL DISPCR LOOP L4

MOV AH,4CH

MOV AL,0

INT 21H DISPAX PROC NEAR

PUSH AX

PUSH BX

PUSH CX

PUSH DX

PUSH DI

MOV BX,10

MOV CX,3

L7:

XOR DX,DX

DIV BX

MOV [DI],DX INC DI

INC DI

LOOP L7

MOV CX,3

L8:

DEC DI

DEC DI

MOV AL,[DI] ADD AL,30H

MOV AH,02

MOV DL,AL

INT 21H

LOOP L8

POP DX

POP CX

POP BX

POP AX

RET DISPAX ENDP DISPCR PROC NEAR PUSH AX

PUSH DX

MOV AH,2

MOV DL,0AH INT 21H

MOV AH,2

MOV DL,0DH INT 21H

POP DX

POP AX

RET DISPCR ENDP XIAOYU PROC NEAR PUSH AX

PUSH DX

MOV AH,02 MOV DL,3CH INT 21H

POP DX

POP AX

RET XIAOYU ENDP XUHAO PROC NEAR PUSH AX

PUSH BX

PUSH CX

PUSH SI

MOV CX,100 MOV BX,AX LEA SI,BUF L5:

CMP BX,[SI] JZ L6

ADD SI,2

LOOP L5

L6:

MOV AX,101

SUB AX,CX

CALL DISPAX

POP SI

POP CX

POP BX

POP AX

RET

XUHAO ENDP

DAYU PROC NEAR

PUSH AX

PUSH DX

MOV AH,02

MOV DL,3EH

INT 21H

POP DX

POP AX

RET

DAYU ENDP

CODE ENDS

END START

4.38 (上机题)按同余法产生一组随机数N(1

的成绩,要求编程实现计算每个同学的平均成绩,并根据平均成绩统计全班的成绩各等级的人数(A:90~100,B:80~89,C:70~79,D:66~69,E:60~65,F:60分以下),按下列格式显示:

Total <总人数>

A: <人数1>

B: <人数2>

C: <人数3>

D: <人数4>

E: <人数5>

F: <人数6>

算法流程图:

相关文档
最新文档