微机作业汇编程序参考标准答案

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

微机作业汇编程序参考标准答案

————————————————————————————————作者:————————————————————————————————日期:

1.编写一个完整的源程序:X,Y,Z三个字节存储单元中各有一个无符号数,其中有两个数据相等,找出不相等的那个数,并存入W单元中

20.在BUF1和BUF2两个数据区中,各定义有10个带符号字数据,试编制一完整的源程序,求它们对应项的绝对值之和,并将和数存入以SUM为首址的数据区中。

DA TA SEGMENT

BUF1 DW -56,24,54,-1,89,-8……

BUF2 DW 45,-23,124,345,-265,……

SUM DW 10 DUP(0)

DA TA ENDS

2.编程:把存储单元A和B中的两个压缩BCD数相加,结果存入存储单元C中,并将结果显示

3.

4. 将DISP单元中存放的一压缩BCD码内容显示出来。(如果能显示为(DISP)=XXH更好)

4. 将字节变量DISP的内容(00H-FFH任意值)显示出来。(如果能显示为(DISP)=XXH 更好)

5.将带符号字节变量A、B中的大数送C单元中。

DA TA SEGMENT

A D

B 60H ;50H ;50H

B DB 50H ;60H ;50H

C DB ?

DA TA ENDST

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DA TA

MOV DS,AX

MOV AL,A

CMP AL,B

JGE NEXT ;A>=B

MOV AL,B

MOV C,AL

NEXT: MOV C,AL ;A

MOV AH,4CH

INT 21H

CODE ENDS

END START

6.设X为带符号字变量,求X的绝对值放入Y单元中。DA TA SEGMENT

X DW -1 ;1 ;0

Y DW ?

DA TA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

MAIN: MOV AX,DA TA

MOV DS,AX

MOV AX,X

CMP AX,0

JGE NT ;JNS NT

NEG AX

NT: MOV Y,AX

MOV AH,4CH

INT 21H

CODE ENDS

END MAIN

7编程:比较D1、D2单元中的字符,相同显示YES,不同显示NO

8. 编制程序实现符号函数(+127≥X≥-128)。

DA TA SEGMENT

X DB 10H ;00H ;-1

Y DB ?

DA TA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA

START: MOV AX,DA TA

MOV DS,AX

MOV AL,X

CMP AL,0

JL NEXT1

CMP AL,0

JG NEXT2

MOV Y,0

JMP RES

NEXT1: MOV Y,-1

JMP RES

NEXT2: MOV Y,1

RES: MOV AH,4CH

INT 21H

CODE ENDS

END START

10、编程:内存自buf单元开始的缓冲区连续存放着100个学生的英文分数,编程序统计其中90~100,60~89,60以下者各有多少人?并把结果连续存放到自resut开始的单元中。

11.编写程序统计BUF单元开始的长度为20的字符串中包含字符‘A’的个数。

12.将BUF起始的字节单元中最大的数(带符号数)放MAX单元中。

14.编程:使用冒泡法实现对N个无符号数从小到大排序。(参考)

DA TAREA SEGMENT

A DW N DUP(?)

FLAG DW ?

DA TAREA ENDS

PROGRAM SEGMENT

MAIN PROC FAR

ASSUME DS:DATAREA,CS:PROGRAM START:

PUSH DS

SUB AX,AX

PUSH AX

MOV AX,DATAREA

MOV DS,AX

MOV CX,N

MOV SI,0

DEC CX

LOOP1:

MOV DI,CX

MOV BX,0

LOOP2:

MOV AX,A[BX]

CMP AX,A[BX+2]

JGE CONTINUE

MOV SI,1

XCHG AX,A[BX+2]

MOV A[BX],AX CONTINUE:

ADD BX,2

LOOP LOOP2

MOV CX,DI

TEST SI,0FFH

JZ LOOP3

LOOP LOOP1

MOV CX ,N

MOV SI, 0

LOOP3:

MOV DX,A[SI]

ADD SI ,2

MOV AH, 02H

INT 21H

LOOP LOOP3

MOV AX,4C00H

INT 21H

MAIN ENDP PROGRAM ENDS

END START

内存BUF单元开始存放20个字节数,编程将按从小到大的顺序排列,并存放在原存储区中。(没错)

DA TA SEGMENT

BUF DB 4,5,20,1,3,6,2,10,9,15,14,13,16,18,17,19,8,11,12,7

CN EQU $-BUF

DA TA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA

START: MOV AX,DA TA

MOV DS,AX

MOV CX,CN-1;循环n-1次19

LOP1: MOV SI,0

PUSH CX;入栈19

LOP2: MOV AL,BUF[SI]

CMP AL,BUF[SI+1]

JLE NEXT;第一个小

XCHG AL,BUF[SI+1];第一个大,就交换

MOV BUF[SI],AL

NEXT: INC SI

LOOP LOP2

POP CX;出栈19

相关文档
最新文档