微型计算机原理实验报告学号姓名海米提。
热合木江班级测控0902班实验一显示程序实验一般来说,程序需要显示输出提示运行的状况和结果,有的还需要将数据区中的内容显示在屏幕上。
本实验要求将指定数据区的数据以十六进制数形式显示在屏幕上,并通过DOS功能调用完成一些提示信息的显示。
实验中可使用DOS功能调用(INT 21H)。
流程图2.试验程序DA TA SEGMENTMES DB 'Show a as hex:', 0AH,0DH,'$'SD DB 'a'DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA START: MOV AX, DATAMOV DS, AXMOV DX, OFFSET MESMOV AH, 09HINT 21HMOV DI, OFFSET SDMOV AL, DS:[DI]AND AL, 0F0HSHR AL,4CMP AL, 0AHJB C2ADD AL, 07HC2: ADD AL, 30HMOV DL, ALMOV AH, 02HINT 21HMOV AL, DS:[DI]AND AL, 0FHCMP AL, 0AHJB C3ADD AL, 07HC3: ADD AL, 30HMOV DL, ALMOV AH, 02HINT 21HMOV AX, 4C00HINT 21HCODE ENDSEND START实验二数据传送实验三、实验内容将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上1.试验程序DA TA SEGMENTMSR DB "HELLO,WORLD!$"LEN EQU $- MSRDDATA ENDSEXDA SEGMENTMSD DB LEN DUP()EXDA ENDSMYSTACK SEGMENT STACKDW 20 DUP()MYSTACK ENDSCODE SEGMENTASSUME CS:CODE, DS:DDA TA, ES:EXDASTART: MOV AX, DDATAMOV DS, AXMOV AX, EXDAMOV ES,AXMOV SI, OFFSET MSRMOV DI, OFFSET MSDMOV CX, LENNEXT: MOV AL, [SI]MOV ES:[DI], ALINC SIINC DIDEC CXJNZ NEXTPUSH ESPOP DSMOV DX, OFFSET MSDMOV AH, 9INT 21HMOV AX, 4C00HINT 21HCODE ENDSEND STARTMOV BX, 0MOV CX, LENNEXT: MOV AL, MSR[BX]MOV ES:MSD[BX], ALINC BXLOOP NEXT2.实验结果实验三数码转换程序实验1.将ASCII码表示的十进制数转换为二进制数1.流程图2.试验程序DATAS SEGMENTNUMBER DB '00012'DATAS ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASSTART: MOV AX,DATASMOV DS,AXMOV CX,4MOV SI,OFFSET NUMBERMOV AL,[SI]SUB AL,30HMOV AH,00HMOV BL,10L1: MUL BLADD AL,[SI+1]SUB AL,30HINC SIDEC CXJNZ L1MOV CX,8MOV BL,ALNEXT: SHL BL,1JC ONEMOV DL,30HJMP EXITONE: MOV DL,31HEXIT: MOV AH,02HINT 21HDEC CXJNZ NEXTMOV AH,4CHINT 21HCODE ENDSEND START3.实验结果2.将十进制数的ASCII码转换为BCD码本实验要求将键盘输入的一个五位十进制数54321的ASC II码存放入数据区中,转换为BCD 码后,并将转换结果按位分别显示于屏幕上。
若输入的不是十进制数的ASC II码,则输出“FF”。
提示:一字节ASC II码取其低四位即变为BCD码1.实验流程图2.实验程序DA TAS SEGMENTBUF DB 6DBDB 6 DUP()BUFE DB 'FF$'DATAS ENDSCODE SEGMENTASSUME DS:DATAS,CS:CODE START: MOV AX,DATASMOV DS,AXMOV DX,OFFSET BUFMOV AH,10INT 21HMOV CH,5MOV SI,DXL2: MOV BL,[SI+2]INC SICMP BL,39HJA L1SUB BL,30HAND BL,0FHMOV DH,4MOV CL,4;SHL AL,CLROL BL,CLNEXT: SHL BL,1JC ONEMOV DL,30HJMP EXITONE: MOV DL,31HEXIT: MOV AH,2INT 21HDEC DHJNZ NEXTDEC CHJNZ L2JMP L3L1: MOV DX,OFFSET BUFEMOV AH,9INT 21HL3: MOV AH,4CHINT 21HCODE ENDSEND START3.实验结果3.将十六进制数的ASCII码转换为十进制数十六位二进制数的值域为0-65535,最大可转换为五位十进制数。
五位十进制数可表示为:N D =D4×104+D3×103+D2×102+D1×10+D因此,将十六位二进制数转换为五位ASCII码表示的十进制数,就是求D1-D4,并将它们转化为ASCII码。
本实验要求将缓冲区中存放的000CH的ASCII码转换成十进制数,并将转结果显示在屏幕1.实验流程图2.实验程序DA TA SEGMENTBUF DB 5DBDB 5 DUP()HEX DB 4 DUP()DECI DB 5 DUP(0),'$'S1 DB '16JINZHI : $'S2 DB 0AH,0DH,'10JINZHI : $'DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA START: MOV AX,DATAMOV DS,AXLEA DX,S1MOV AH,9INT 21HLEA DX,BUFMOV AH,10INT 21HMOV SI,2MOV DI,0CHECK: MOV AL,[SI][BUF]CMP AL,40HJS NUMCMP AL,47HJS CAPITALSUB AL,57HJMP STORENUM: SUB AL,30HJMP STORECAPITAL: SUB AL,37HJMP STORESTORE: MOV HEX[DI],ALINC DIINC SICMP DI,4JNZ CHECKLEA DX,S2MOV AH,9INT 21HMOV AX,WORD PTR HEXSHL AL,4ADD AH,ALMOV CH,AHMOV AX,WORD PTR 2[HEX]SHL AL,4ADD AL,AHMOV AH,CHMOV SI,5MOV BX,10MOV DX,0CMP AX,0JNS CONVNEG AXPUSH AXPUSH DXMOV DL,2DHMOV AH,2INT 21HPOP DXPOP AXCONV: DEC SIDIV BXADD DX,30HMOV DECI[SI],DLXOR DX,DXCMP AX,0JNZ CONVLEA DX,DECIMOV AH,9INT 21HMOV AH,4CHINT 21HCODE ENDSEND START3.实验结果4.BCD码转换为二进制码本实验要求将四个二位十进制数的BCD码存放在某一内存单元中,转换出的二进制数码存入其后的内存单元中,转换结束,送屏幕显示。
1.实验流程图2.实验程序DA TA SEGMENTDASC DB 3DBDB 3 DUP()S1 DB 0AH,0AH,0DH,'10 JINZHI MA : $'S2 DB 0AH,0DH,' BCD MA: $'S3 DB 0AH,0DH,' 2 JINZHI MA : $'STO DB 8 DUP()DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DI,0MOV SI,4LOOPER: CALL WHOLEDEC SIJMP EXITWHOLE: LEA DX,S1MOV AH,9INT 21HLEA DX,DASCMOV AH,10INT 21HLEA DX,S2MOV AH,9INT 21HMOV AX,WORD PTR 2[DASC]SUB AX,3030HSHL AL,4ADD AL,AHMOV [DI][STO],ALMOV CH,2MOV CL,4PRE1: MOV DX,30HROL AL,1JNC DISP1ADD DX,01HDISP1: PUSH AXMOV AH,02INT 21HPOP AXDEC CLJNZ PRE1PUSH AXMOV DL,20HMOV AH,2INT 21HPOP AXDEC CHMOV CL,4JNZ PRE1LEA DX,S3INT 21HMOV AL,[DI][STO]MOV BL,ALAND BL,0FHSHR AL,4MOV CL,10MUL CLADD AL,BLINC DIMOV [DI][STO],ALINC DIMOV CX,8PRE2: MOV DX,30HROL AL,1JNC DISP2ADD DX,01HDISP2: PUSH AXMOV AH,02INT 21HPOP AXLOOP PRE2RETEXIT: MOV AH,4CHINT 21HCODE ENDSEND START实验四运算类程序实验1.二进制双精度加法运算本实验要求计算x+y=z,将结果z输出到屏幕,其中x=001565a0h,y=0021b79eh.1.实验流程图2.实验程序DA TA SEGMENTX DD 421C65A0HY DD 3C41B69BHS DB 'X+Y= $'SUM DB 4 DUP(0)DA TA ENDSCODE SEGMENTASSUME CS:CODE, DS:DA TASTART: MOV AX,DA TAMOV DS,AXMOV AX,WORD PTR XMOV BX,WORD PTR YADD AX,BXMOV WORD PTR SUM,AXMOV AX,WORD PTR 2[X]MOV BX,WORD PTR 2[Y]ADC AX,BXMOV WORD PTR 2[SUM],AXLEA DX,SMOV AH,9INT 21HMOV CX,4MOV SI,3CHECK: MOV AL,SUM[SI]MOV AH,ALSHR AL,4CMP AL,0AHJS DISP1ADD AL,07HDISP1: ADD AL,30HMOV DL,ALPUSH AXMOV AH,02HINT 21HPOP AXAND AH,0FHCMP AH,0AHJS DISP2ADD AH,07HDISP2: ADD AH,30HMOV DL,AHMOV AH,02HINT 21HDEC SILOOP CHECKEXIT: MOV AH,4CHINT 21HCODE ENDSEND START(2)减法程序1.实验流程图DATA SEGMENTX DW 0400HY DW 0102HS DB 'Z=X-Y= $'Z DW 2 DUP(0)DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA START: MOV AX,DATAMOV DS,AXLEA DX,SMOV AH,9INT 21HMOV AX,WORD PTR XMOV BX,WORD PTR YSUB AL,BLAASSUB AH,BHAASMOV Z,AXADD AX,3030HMOV BX,AXMOV DL,30H MOV AH,2 INT 21HMOV DL,BH MOV AH,2 INT 21HMOV DL,30H MOV AH,2 INT 21HMOV DL,BL MOV AH,2 INT 21HEXIT: MOV AH,4CH INT 21HCODE ENDSEND START 3.实验结果实验五分支程序设计实验实验内容:实验可以使用BH,BL作为暂存现行的最大值和最小值,且在程序的初始,将BH和BL初始化为首字节的内容,然后进入循环操作。