西安电子科技大学微机原理上机题37题

  • 格式:docx
  • 大小:55.88 KB
  • 文档页数:5

下载文档原格式

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

编写程序实现将缓冲区BUFFER中的100个字按递增排序,并按下列格式顺序显示:数据1 <原序号>

数据2 <原序号>

数据3 <原序号>

················

程序如下(效果图):

N=100

DATAS SEGMENT

BUFFER LABEL WORD

X=55519

REPT 100

X=(X+7517)mod 65535

DW X

ENDM

NUMBER LABEL BYTE

Y=0

REPT 100

Y=Y+1

DB Y

ENDM

DECIMAL DB 5 DUP(?)

M DW 1 DUP(?)

DATAS ENDS

STACKS SEGMENT

DW 100H DUP(?)

TOP LABEL WORD

STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS START:

MOV AX,DATAS

MOV DS,AX

MOV ES,AX

MOV AX,STACKS

MOV SS,AX

LEA SP,TOP

XOR AX,AX ;开始程序

LEA SI,BUFFER

LEA DI,NUMBER

CALL SORT

MOV CX,N ;显示程序开始

L1:

MOV AX,[SI]

MOV M,5

CALL DISPAXD

CALL DISPEM

ADD SI,2 ;显示数值

XOR AX,AX

MOV AL,[DI]

MOV M,3

CALL DISPAXD

CALL DISPCR

INC DI ;显示序号

LOOP L1

MOV AH,4CH

MOV AL,0

INT 21H

SORT PROC NEAR

PUSH SI

PUSH DI

PUSH AX

PUSH BX

PUSH CX

MOV CX,N;开始冒泡程序

DEC CX

LP1: ;外循环

PUSH SI

PUSH DI

PUSH CX

LP2: ;内循环

MOV AX,[SI]

CMP AX,[SI+2]

JBE NOXCHG

XCHG AX,[SI+2]

MOV [SI],AX

MOV BL,[DI]

XCHG BL,[DI+1]

MOV [DI],BL

NOXCHG:

ADD SI,2

INC DI

LOOP LP2

POP CX

POP DI

POP SI

LOOP LP1 ;冒泡结束

POP CX

POP BX

POP AX

POP DI

POP SI

RET

SORT ENDP

DISPAXD PROC NEAR

PUSH AX

PUSH BX

PUSH CX

PUSH DX

PUSH DI

LEA DI,DECIMAL

CALL TRANS16TO10

MOV CX,M

MOV BX,CX

DEC BX

LEA DI,DECIMAL[BX];指向最高位

MOV AH,2

DISPAXD2:

MOV DL,[DI]

ADD DL,30H

DEC DI

INT 21H

LOOP DISPAXD2

POP DI

POP DX

POP CX

POP BX

POP AX

RET

DISPAXD ENDP

TRANS16TO10 PROC NEAR

PUSH AX

PUSH BX

PUSH CX

PUSH DX

PUSH DI

MOV BX,10

MOV CX,M

TRANS1:

XOR DX,DX

DIV BX

MOV [DI],DL

INC DI

LOOP TRANS1

POP DI

POP DX

POP CX

POP BX

POP AX

RET

TRANS16TO10 ENDP

DISPEM PROC NEAR

PUSH AX

PUSH DX

MOV AL,20H

MOV AH,02

MOV DL,AL

INT 21H ;显示一位字符

POP DX

POP AX

RET

DISPEM ENDP

DISPCR PROC NEAR

PUSH AX

PUSH DX

MOV AL,0AH

MOV AH,02

MOV DL,AL

INT 21H ;显示一位字符

POP DX

POP AX

RET

DISPCR ENDP

CODES ENDS

END START