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