中国石油大学微机原理期末考试微机编程题总结

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

1已知在数据段中定义变量VAL1,其中装入了100个字节的数据;VAL2为数据段中定义的可以存储100个字节的变量。要求将VAL1中的内容取负(即,正数变负数,负数变正数,零不变)后传送到VAL2中。画出程序流程图,并编写完整的8086汇编程序。数据段可采用以下定义形式:

DATA SEGMENT

VAL1DB100 DUP(?)

VAL2DB 100 DUP(?)

DATA ENDS

答:流程图:(2分)

程序(4分):结构1分,初始化1分,循环体1分,DOS接口1分。每部分可按0.5分进行得扣分。

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX

MOV ES,AX

CLD

MOV SI,OFFSET VAL1;LEA SI,VAL1

MOV DI,OFFSET VAL2;LEA DI,VAL2

MOV CX,100

LP:N EG[SI]

MOVSB

LOOP LP

MOV AH,4CH

INT21H

CODE ENDS

END START

注:循环体内也可以使用减法指令、MOV指令、INC指令等。只要完成取负及数据传送即可。与DOS接口也可采用子程序结构。

2设在内存缓冲区中有一数据块STRDATA,存放着30 个字节型补码数据。要求画出程序流程框图,编写完整的汇编语言源程序,找出其中的最大数,存入RESULT 单元中,并在关键语句后加适当注释。

答:

DSEG SEGMENT

STRDATA DB 30 DUP(?) ;定义数据串

RESULT DB DUP(?)

DSEG ENDS

CSEG SEGMENT

ASSUME CS:CODE, DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV BX, OFFSET STRDATA ;数据串首址→BX

MOV AL, [BX]

MOV CX, 29 ;数据长度→CX

L1: INC BX ;地址指针加1

CMP AL, [BX] ;和当前数比较

JGE L2 ;当前数大

MOV AL, [BX] ;当前数为最大数

L2: DEC CX ;数据串长度减1

JNZ L1 ;串未完,继续

MOV RESULT, AL ;保存最大数在RESULT

MOV AH,4CH

INT 21H

CSEG ENDS

END START

三、(10 分)设在内存缓冲区中有一数据块BLOCK,存放着50 个字节型数据。要求画出程序流程框图,编写完整的汇编语言源程序,统计出其中偶数的个数,结果存入RESULT 单元中。【答案】

程序流程框图(4分);完整程序(6 分);

DATA SEGMENT

BLOCK DB 50 DUP(?)

RESULT DB ?

DATA ENDS (1 分)

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV BX, OFFSET BLOCK

MOV CX, 50

MOV AH,0 (1 分)

L1: MOV AL, [BX]

TEST AL,01H (1 分)

JNZ L2

INC AH

L2: INC BX

DEC CX

JNZ L1 (1 分)

MOV RESULT, AH (1 分)

MOV AH,4CH

INT 21H

CODE ENDS

END START (1 分)

四、(10分)设在内存缓冲区中有一数据块DATA,存放着20个带符号的字节型数据,对这20个数据进行以下处理:去掉其中的最大值,然后对剩余的19个数求和,并将和送入SUM 单元。要求画出程序流程框图,编写完整的汇编语言源程序。注:不考虑求和是否溢出。

DATA SEGMENT

DATA DB

20 DUP(?)

SUM DB 0 DATA

ENDS (1分) CODE SEGMENT

ASSUME CS:CODE, DS:DATA START:

MOV AX,DATA

MOV DS,AX MOV BX, OFFSET DATA

MOV CX, 20

MOV AL, [BX] (1分) MOV AH,0 L1: ADD AH,[BX] (1分)

CMP AL,[BX] JG L2 (或JGE L2) (1分) MOV AL,[BX]

L2: INC BX

DEC C X JNZ

L1 (1分)

SUB AH,AL

MOV SUM,AH (1分)

MOV AH,4CH

INT 21H

CODE ENDS ENDSTART

结束

数据块DATA 定义 [BX]→AL 数据块首地址→BX 数据块长度→CX 初值0送SUM [BX]→AL

BX+1→BX

SUM=SUM-AL

AL>[BX]?

20个数判断完了?

N

Y

N

Y

开始

SUM=SUM+[BX]

相关文档
最新文档