微机原理编程题集合
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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?