当前位置:文档之家› 内蒙古工业大学微机原理实验指导答案.doc

内蒙古工业大学微机原理实验指导答案.doc

被嗅材尊机原理与旅用实验指导布实验程禹够告沽说:信息工程修陇班披,电8 77-7班g生名:Eg样号,2011202030实验一编辑、汇编、连接、调试程序的使用程序设计A设计要求(1)将FFFFH 送到AX, SI, DI, BP, DS, ES 寄存器(2)编程(利用DEBUG调试程序,每执行一次T命令后,记录相关寄存器内容,并判断是否正确。

)程序如下:CODE SEGMENTASSUME CS:CODESTART PROC FARSTTPUSH DSSUB AX,AXPUSH AXMOV AX,0FFFFHMOV SI,AXMOV DI,AXMOV BP,AXMOV DS,AXMOV ES,AXRETSTARTENDPCODE ENDSEND STTB、设计要求⑴将1,2,3,4,5分别送到数据段偏移地址为1000H, 1001H, 1002H, 1003H, 1004H,单元中。

⑵编程DATA SEGMENTORG 1000HDATA ENDSCODE SEGMENTASSUME CS:CODESTART PROC FARSTTPUSH DSSUB AX,AXPUSH AXMOV AX, DATAMOV DS,AXMOV AL,1MOV DS:[1000H],ALMOV AL,2MOV DS:[1001H],ALMOV AL,3MOV DS:[1002H],ALMOV AL,4MOV DS:[1003H],ALMOV AL,5MOV DS:[1004H],ALRETSTARTENDPCODE ENDSEND STT实验二、加法程序设计设计内容A、设计要求(1)在数据段偏移地址1000H处开始,连续存放有3字节的数据(高位对应高地址,低位对应低地址),1003H处开始连续存放有两字节的数据(高对高,低对低),求这两数据之和,并将结果放在流量数据之后。

(eg: 1234 56H+78 9AH=12 AC FOH)(2)编程DATA SEGMENTORG 1000HH1 DB56H J34H,12H,9AH,78HH2 DB 3DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTTPUSH DSSUB AX,AXPUSH AXMOV AX,DATA MOVDS,AXMOVSIJOOOHMOV DI,1003HMOV BX,1005HMOV CX,2CLCLP:MOVAL,[SI]MOV DL,[DI[ADCAL,DLMOV [BX],ALINC SIINC DIINC BXLOOP LPMOV AL,[SI]ADC AL,00MOV [BX],ALRETCODE ENDPSTART ENDSEND STTC、设计要求(1)用串传送指令把A程序的数据块偏移地址1000H开始的区域传递到同一数据段的偏移地址为1003H开始的区域。

用DEBUG查看运行结果。

(2 )编程DATA SEGMENT ORG1000HH1 DB 56H,34H,12H,9AH,78HORG 1003HH2 DB 56H,34H,12H J9AH,78H,0F0H,0ACH J12HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTTPUSH DSSUB AX,AXPUSH AXMOV AX, DATAMOV DS,AX MOVES,AXLP: MOVSIJOOOH MOVDIJ003HMOVSB MOVCX,8INC SIINC DILOOP LPRETSTARTENDPCODE ENDSEND STT实验三、查表程序设计A、设计要求(1)在数据段偏移地址1000H处,存放0—9的平方值,任给一个自然数M 在1010H单元中(0WMW9),查表求出M的平方值,并将结果放入1011单元中。

(2)编程DATA SEGMENTORG 1000HTAB DB 00,01,04,09,16,25,36,49,64,81ORG 1010H M DB 4,?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT: PUSH DSSUB AX,AXPUSH AXMOV AX, DATAMOV DS3AXMOV BX,OFFSET TABMOV AL,MXLATMOV DS:[1011H],ALRETSTART ENDPCODE ENDSEND STTB、设计要求(1)编程实现:将BCD数00H-99H顺序存放到当前数据1000H开始的内存单元中,用DEBUG查看运行结果。

(2)编程DATA SEGMENTORG 1000HH DB 100 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT: PUSH DS SUBAX5AXPUSH AXMOV AX,DATAMOV DS,AXMOVSI,1000HMOVAL,0MOV CX, 100LP:MOV [SI],ALADD AL,1DAAINC SILOOP LPRETSTARTENDPCODE ENDSEND START实验四、码制的变换程序设计B、设计要求(1)把BX中的“1”的个数放到AL中,“0”的个数放到AH中,并在屏幕上分别显示0和1的个数(2)编程DATA SEGMENTORG 1000HH DB 000FHORG 1010HWDB100 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT:PUSH DSSUB AX,AXPUSH AXMOV AX,DATAMOV DS,AXCALLZ1CALL Z2CALL Z3CALL Z4RETSTARTENDPZ1 PROC NEARMOV BX,DS:[1000H] MOV CX,16MOV AX,0CLCKK:RCR BX,1JC AAADD AH,1JMP BBAA:ADD AL,1 BB:LOOP KKMOV DS:[1010H],AH MOV DS:[1020H],AL RETZ1 ENDPZ2 PROC NEAR PUSH AXPUSH BXMOV AX,DS:[1010H] MOV AH,0MOV BX,000AHDIV BLADDAH,30H ADDAL,30HMOV DS:[1041H],AH MOV DS:[1040H],AL POP BXPOP AXRETZ2 ENDPZ3 PROC NEAR PUSH AXPUSH BXMOV AX,DS:[1020H] MOV AH,0MOV BX,000AHDIV BLADDAH,30HADDAL s30HMOV DS:[1044H],AH MOV DS:[1043H],ALPOP AXRETZ3 ENDPZ4 PROC NEARPUSH AXPUSH CXPUSH DXPUSH SIMOV CX,6MOVSI,1040HLP:MOV DL,[SI]MOV AH,2INT21HINC SILOOP LPPOP SIPOP DXPOP CXPOP AXRETZ4 ENDPCODE ENDSEND STT实验五、求最大值的程序设计A、设计要求(1)从首地址为BUF开始存放的10个字节无符号数,从这些数中找出最大值, 存入MAX中。

(2)编程DATA SEGMENTORG 1000HBUF DB 01H302H303H,04H305H306H,07H308H309H,0AHDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT: PUSH DS SUBAX,AXPUSH AXMOV AX, DATAMOV DS,AXMOVSIJOOOHMOV AL,[SI]INC SIMOVAL,0LP: CLCCMP AL,[SI]JNCAAMOV AL,[SI]AAJNCSILOOP LPMOV DS:[2000H],ALRETSTARTENDPCODE ENDSEND ST1实验六、软件综合设计一、实验目的:1.熟悉并且掌握汇编语言的基本指令及编程方法。

2.掌握用汇编语言编写程序的思路和设计方法。

3.熟练掌握DEBUG调试程序的方法。

二、实验内容:1.设计课题:模拟温度测量软件设计2设计要求:(1)将首地址为1000H开始存放的10个单字节数据,进行数字滤波。

实现方法是:找出其中最大值(设子程序名为:ZMAX)和最小值(设子程序名为:ZMIN)并从中10个数中去掉最大值和最小值,将剩余的的8个数取平均值后,存放在1010H 单元中。

(设子程序名为:Z1)(2)将存放在1010H单元中的十六进制数的整数部分转换成非压缩的BCD码,存放在1020H开始的存储单元中(低位在前,高位在后)。

(设子程序名为:Z2)(3)将存放在1020H开始的非压缩BCD码转换成ASCII码。

存放在1030H开始的存储单元中。

(低位在前,高位在后)(设子程序名为:Z3)(4)将存放在1030H开始的ASCII码送CRT显示(高位在前,低位在后)。

(设子程序名为:Z4)3、程序结构及编程DATA SEGMENTORG 1000HL DB9AH,66H,2EH51AH,5DH,3CH,36H,88H552H,22H ORG 1010HAVER DB ?ORG 1020HX DB3 DUP(?)ORG 1030HY DB3 DUP(?)ORG 1050HH DB 4DUP(?)ORG 1060HH1 DB100 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARSTT: PUSH DSSUB AX,AXPUSH AXMOV AX, DATAMOV DS,AXCALLZMAXCALL ZMINCALL Z1CALLZ2CALLZ3CALLZ4RETSTART ENDPZMAX PROC NEARPUSH AXPUSH CXPUSH SIMOVSI,1000HMOV CX,0009HMOVALJSI] LP1:CLCCMPALJSI]JNC AAMOVALJSI]AA:INC SILOOP LP1MOV DS:[1050H],ALPOP SIPOP CXPOP AXRETZMAX ENDPZMIN PROC NEARPUSH AXPUSH CXPUSH SIMOVSI,1000HMOV CX,0009HMOV AL,[SI]LP2:GLCCMP AL,[SI]JC BBMOV AL,[SI]BB:INCSILOOP LP2MOV DS:[1052H],ALPOP SIPOPCXPOP AXRETZMIN ENDPZ1 PROC NEARPUSH AXPUSH CXPUSH SI MOVSIJOOOH MOV CX,000AH MOV AX,0000H EE:ADDAL,[SI] ADGAH30INC SILOOP EESUBAX,DS:[1050H]SUBAX,DS:[1052H]MOV BL,0008HDIV BLMOV DS:[1010H],ALPOP SIPOP CXPOP AXRETZ1 ENDPZ2 PROC NEAR PUSH AXPUSH BXMOV AX,DS:[1010H] MOV AH,0MOV BX,000AHDIV BL;MOV DS:[1020H],AH MOV DS:[1021H],AL POP BXPOP AXRETZ2 ENDPZ3 PROC NEAR PUSH AXPUSH BXMOV AX,DS:[1020H] ADDAH,30H ADDAL.30HMOV DS:[1030H],AX POP BXPOP AXRETZ3 ENDPZ4 PROC NEAR PUSH AXPUSH CXPUSH DXPUSH SIDO ..AD0ODI ..ADID2 .. AD2D3 .-FAOD4 .. AD4 JD5 ..J? PA 7 D6 a. AD6 3 D7 . . in A n 7 ■■入AO .. 皿S FfO AO !Al ..** PB7 IOYO .—CE I ORD .. RD I0WR ..WRMOV CX,3 MOVSIJ032HLP3: MOV DL,[SI] MOV AH,2 INT21H DEC SI LOOP LP3 POP SI POP DX POP CX POP AX RET Z4 ENDP CODE ENDSEND STT实验七、并行接口芯片的使用(1)编程要求将开关kO ——k7作为输入开关量从8255c 口输入,发光二极管 10——17作 为输出开关量从A 口输出。

相关主题