微机原理编程题集合

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

微机原理编程题

1. 分支程序设计

①.编写一段程序,已知BUF1单元中有一带符号字节数据X,BUF2中有一带符号字节数据Y,根据以下函数关系编写程序求Z的值,结果存入RESULT 单元。Z=|X-Y|;

DATA SEGMENT

BUF1 DB 05H

BUF2 DB 02H

RESULT DB?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX

MOV AL,BUF1

MOV BL,BUF2

SUB AL,BL

JNC GREAT

NEG AL

GREAT:MOV RESULT,AL

EXIT: MOV AH,4CH

INT 21H

CODE ENDS

END START

②.编写一段程序,已知BUF单元中有一无符号字节数据X,假设为8,根据以下函数关系编写程序求Y的值,结果存入RESULT 单元。Z=5X X<10,X-5 X>=10;

DATA SEGMENT

BUF DB 8

RESULT DB?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX

MOV AL,BUF

CMP AL,10

JAE GRE

MOV BL,AL

ADD AL,AL

ADD AL,AL

ADD AL,BL

JMP DONE

GRE: SUB AL,5

DONE: MOV RESULT,AL

MOV AH,4CH

INT 21H

CODE ENDS

END START

③.在内存单元BUF中存放一个带符号字节数据X,假定为-2,试根据以下函数关系编写程序求Y的值,结果存入RESULT 单元。Y=1 X>0,0 X=0,-1 X<0;

DATA SEGMENT

BUF DB-2

RESULT DB?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX,DATA

MOV DS,AX

MOV AL,BUF

CMP AL,0

JGE L1

MOV AL,-1

JMP L3

L1:JZ L2

MOV AL,1

JMP L3

L2:MOV AL,0

L3:MOV RESULT,AL

MOV AH,4CH

INT 21H

CODE ENDS

END START

2. N个数中求最大值、最小值.假定N=10,已知原始数据存放在BUF开始的内存单元中,将结果存入MAX,MIN内存单元中。

DATA SEGMENT

BUF DB 3,5,7,8,5,3,9,7,13,1

COUNT EQU $-BUF

MAX DB?

MIN DB?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX,DATA

MOV DS,AX

MOV CX,COUNT-1

MOV AL,BUF

MOV MAX,AL

MOV MIN,AL

LEA SI,BUF

AGAIN:

MOV AL,[SI+1]

CMP AL,MIN

JGE S1

MOV MIN,AL

S1: CMP AL,MAX

JLE S2

MOV MAX,AL

S2: INC SI

LOOP AGAIN

MOV AH,4CH

INT 21H

CODE ENDS

END START

3. 编写程序求1+2+3+……+N<100时最大的N值,将N值送NUM单元中,同时将1+2+3+……+N的和送到SUM单元中。

DATA SEGMENT

NUM DB?

SUM DB?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX

MOV AL,0

MOV BL,0

AGAIN:INC BL

ADD AL,BL

CMP AL,100

JB AGAIN

SUB AL,BL

DEC BL

MOV NUM,BL

MOV SUM,AL

MOV AH,4CH

INT 21H

CODE ENDS

END START

4. 统计字符,正数,负数,零的个数。

①.若自STRING单元开始存放一个字符串,以'$'结尾,试编写程序,

统计字符串的长度,并将结果存入COUNT单元。

DATA SEGMENT

STRING DB'abcdefg$'

COUNT DW?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX

LEA SI,STRING

MOV CX,0

NEXT: MOV AL,[SI]

CMP AL,'$'

JZ DONE

INC CX

INC SI

JMP NEXT

DONE: MOV COUNT,CX

MOV AH,4CH

INT 21H

CODE ENDS

END START

②.自BUF单元开始存放10个带符号字节数据,将其中的正数、负数和零选出来,并统计其个数,分别存入PLUS、MINUS和ZERO单元中。

DATA SEGMENT

BUF DB 5,-2,0,-1,4,0,-4,8,0,-7

PLUS DB?

MINUS DB?

相关文档
最新文档