微机作业汇编程序参考标准答案————————————————————————————————作者:————————————————————————————————日期:1.编写一个完整的源程序:X,Y,Z三个字节存储单元中各有一个无符号数,其中有两个数据相等,找出不相等的那个数,并存入W单元中20.在BUF1和BUF2两个数据区中,各定义有10个带符号字数据,试编制一完整的源程序,求它们对应项的绝对值之和,并将和数存入以SUM为首址的数据区中。
DA TA SEGMENTBUF1 DW -56,24,54,-1,89,-8……BUF2 DW 45,-23,124,345,-265,……SUM DW 10 DUP(0)DA TA ENDS2.编程:把存储单元A和B中的两个压缩BCD数相加,结果存入存储单元C中,并将结果显示3.4. 将DISP单元中存放的一压缩BCD码内容显示出来。
(如果能显示为(DISP)=XXH更好)4. 将字节变量DISP的内容(00H-FFH任意值)显示出来。
(如果能显示为(DISP)=XXH 更好)5.将带符号字节变量A、B中的大数送C单元中。
DA TA SEGMENTA DB 60H ;50H ;50HB DB 50H ;60H ;50HC DB ?DA TA ENDSTCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DA TAMOV DS,AXMOV AL,ACMP AL,BJGE NEXT ;A>=BMOV AL,BMOV C,ALNEXT: MOV C,AL ;A<BMOV AH,4CHINT 21HCODE ENDSEND START6.设X为带符号字变量,求X的绝对值放入Y单元中。
DA TA SEGMENTX DW -1 ;1 ;0Y DW ?DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAMAIN: MOV AX,DA TAMOV DS,AXMOV AX,XCMP AX,0JGE NT ;JNS NTNEG AXNT: MOV Y,AXMOV AH,4CHINT 21HCODE ENDSEND MAIN7编程:比较D1、D2单元中的字符,相同显示YES,不同显示NO8. 编制程序实现符号函数(+127≥X≥-128)。
DA TA SEGMENTX DB 10H ;00H ;-1Y DB ?DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DA TAMOV DS,AXMOV AL,XCMP AL,0JL NEXT1CMP AL,0JG NEXT2MOV Y,0JMP RESNEXT1: MOV Y,-1JMP RESNEXT2: MOV Y,1RES: MOV AH,4CHINT 21HCODE ENDSEND START10、编程:内存自buf单元开始的缓冲区连续存放着100个学生的英文分数,编程序统计其中90~100,60~89,60以下者各有多少人?并把结果连续存放到自resut开始的单元中。
11.编写程序统计BUF单元开始的长度为20的字符串中包含字符‘A’的个数。
12.将BUF起始的字节单元中最大的数(带符号数)放MAX单元中。
14.编程:使用冒泡法实现对N个无符号数从小到大排序。
(参考)DA TAREA SEGMENTA DW N DUP(?)FLAG DW ?DA TAREA ENDSPROGRAM SEGMENTMAIN PROC FARASSUME DS:DATAREA,CS:PROGRAM START:PUSH DSSUB AX,AXPUSH AXMOV AX,DATAREAMOV DS,AXMOV CX,NMOV SI,0DEC CXLOOP1:MOV DI,CXMOV BX,0LOOP2:MOV AX,A[BX]CMP AX,A[BX+2]JGE CONTINUEMOV SI,1XCHG AX,A[BX+2]MOV A[BX],AX CONTINUE:ADD BX,2LOOP LOOP2MOV CX,DITEST SI,0FFHJZ LOOP3LOOP LOOP1MOV CX ,NMOV SI, 0LOOP3:MOV DX,A[SI]ADD SI ,2MOV AH, 02HINT 21HLOOP LOOP3MOV AX,4C00HINT 21HMAIN ENDP PROGRAM ENDSEND START内存BUF单元开始存放20个字节数,编程将按从小到大的顺序排列,并存放在原存储区中。
(没错)DA TA SEGMENTBUF DB 4,5,20,1,3,6,2,10,9,15,14,13,16,18,17,19,8,11,12,7CN EQU $-BUFDA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DA TAMOV DS,AXMOV CX,CN-1;循环n-1次19LOP1: MOV SI,0PUSH CX;入栈19LOP2: MOV AL,BUF[SI]CMP AL,BUF[SI+1]JLE NEXT;第一个小XCHG AL,BUF[SI+1];第一个大,就交换MOV BUF[SI],ALNEXT: INC SILOOP LOP2POP CX;出栈19LOOP LOP1MOV AH,4CHINT 21HCODE ENDSEND START15. 在字节数组中找出第一个值为0的数据,并将其偏移地址存入RES单元中,若无,则RES存入FFFFH。
16.从键盘输入一个字符,若为‘0’~‘9’的字符则显示“digital”, 若为‘A’~‘Z’的字符则显示“CHARACTER”,否则显示“other”。
(可连续操作,按ESC键退出)P R I N T :M O VA H , 0 9E X I T :M O VA H , 4 C HI N T2 1 HODEENDSENDSTART19.在数据段中变量WEEK存储星期一至星期日的英文缩写(MON、TUE、WED、THU、FRI、SAT、SUN),DAY单元中用数1~7分别表示星期一到星期日,编程根据DAY的内容显示对应的英文缩写。
DA TA SEGMENTWEEK DB 'MON','TUE','WED','THU','FRI','SAT','SUN'DAY DB 4DA TA ENDS;----------------------------------------------------------------------STAK SEGMENT STACKDW 30 DUP(?)STAK ENDS;-----------------------------------------------------------------------CODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DA TAMOV DS,AXXOR BX,BXMOV BL,DAYDEC BLMOV DL,BLSHL BL,1ADD BL,DLMOV CX,3MOV AH,2LOP: MOV DL,[BX]INT 21HINC BXLOOP LOPDONE: MOV AH,4CHINT 21HCODE ENDSEND STARTPage 9 最后一题Page 9 8255与系统总线连接示意图编程:已知在以ARRAY为首地址的数据区中存放10个带符号字节数据:ARRAY DB 1,2,-1,3,4,-2,-3,4,5,-6编程将ARRAY分成两个数组:正数数组P_ARY和负数数组N_ARY。
(参考)DA TA SEGMENTARRAY DW,1,2,-1,3,4,-2,-3,4,5,-6P_ARY DW 10 DUP(?)N_ARY DW 10 DUP(?)NUM1 DB 00HNUM2 DB 00HDA TA ENDSCODE SEGMENTASSUMECS:CODE,DS:DATA,SS:STACK START:MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV SP,OFFSET TOP LEA SI,ARRAYMOV CX,0AHAGAIN:CMP [SI],0JB D1MOV AL,NUM1INC ALMOV NUM1,ALLEA DI,P_ARYMOV [DI+AL],[SI]LOOP AGAINJMP NEXTD1:MOV AL,NUM2 INC ALMOV NUM2,AL LEA DI,N_ARY MOV [DI+AL],[SI] LOOP AGAIN NEXT:MOV CX,NUM1 LEA SI,P_ARY AGAIN1:MOV AH,02H MOV DL,[SI]INC SILOOP AGAIN1 MOV CX,NUM2 LEA SI,N_ARY AGAIN2:MOV AH,02H MOV DL,[SI]INC SILOOP AGAIN2MOV AH,4CHINT 21H CODE ENDSEND START13.编程:已知有几个元素存放在以BUF+1为首址的字节存贮区中,个数放在BUF单元中。
试统计其中正数、负数和零的个数。
DA TA SEGMENTBUF DB 03H,35H,81H,00HN_PLUS DB 0N_NEG DB 0N_ZERO DB 0DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA START:MOV AX,DATAMOV DS,AXMOV BX,OFFSET BUFMOV CL,[BX]INC BX LOP:MOV AL,[BX]CMP AL,0JG TOPSJE TOZRINC N_NEGJMP NEXT TOPS:INC N_PLUSJMP NEXT TOZR:INC N_ZERONEXT:INC BXDEC CLJNZ LOPMOV AH,4CHINT 21H CODE ENDSEND START。