当前位置:文档之家› 微机原理程序设计

微机原理程序设计

XX理工大学微机原理程序设计-----------------------------------------------------------实验一实验要求:试编写一个程序,要求比较数组ARRAY中的三个16位补码数,并根据比较结果在显示终端上显示如下信息:(1)如果三个数都不相等则显示0;(2)如果三个数有两个相等则显示1;(3)如果三个数都相等则显示2。

程序流程图:开始初始化显示数组中的三个补码数结束显示0显示2显示1i=0i=1i=2三数两两比较并记相等的个数i显示“请连续输入三个三位数:”调用程序,使输入的三个三位数转换为补码形式,并分别保存在数组ARRAY 中程序清单:DATA SEGMENTARRAYDW1,2,3DATA ENDS CODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AX,ARRAY MOV BX,ARRAY+2 MOV CX,ARRAY+4 CMP AX,BX JE LCMPBX,CXJE L1CMP AX,CXJE L1MOV DL,30HJMP EXITL: CMP BX,CXJNE L1MOV DL,32HJMP EXITL1: MOV DL,31HEXIT: MOV AH,2INT 21HMOV AH,4CHINT 21HCODE ENDSEND START运行结果:ARRAY中三个数互不不相等:ARRAY中三个数有两个相等:ARRAY中三个数都相等:实验二实验要求:从键盘输入一系列字符(以回车符结束),并按字母、数字及其它字符分类计数,最后显示出这三类计数结果。

程序流程图:开始宏定义输入并显示一串字符将字符串各字符转换为ASCII码按ASCII码表判断各字符并归类字符按分类显示结束程序清单:DATA SEGMENTCOUNT_OF_LETTER DB 'the number of letter is :','$' COUNT_OF_NUMBER DB ' the number of number is :','$' COUNT_OF_CHARACTER DB' the number of charater is :','$' DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:PUSH DSSUB AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV BH,0MOV BL,0MOV CL,0NEXT:MOV AH,1INT 21HCMP AL,0DHJE EXITCMP AL,30HJB COUT_OF_CHARATER_ADDCMP AL,39HJBE COUT_OF_NUMBER_ADDCMP AL,41HJB COUT_OF_CHARATER_ADDCMP AL,5AHJBE COUNT_OF_LETTER_ADDCMP AL,61HJB COUT_OF_CHARATER_ADDCMP AL,7AHJBE COUNT_OF_LETTER_ADDCOUT_OF_CHARATER_ADD:INC CLJMP NEXTCOUT_OF_NUMBER_ADD:INC BLJMP NEXTCOUNT_OF_LETTER_ADD:INC BHJMP NEXTEXIT:CALL CRLFLEA DX,COUNT_OF_LETTERMOV AH,09INT 21HMOV AL,BHCALL BIN_DECCALL CRLFLEA DX,COUNT_OF_NUMBERMOV AH,09INT 21HMOV AL,BLCALL BIN_DECCALL CRLFLEA DX,COUNT_OF_CHARACTER MOV AH,09INT 21HMOV AL,CLCALL BIN_DECCALL CRLFRETCRLF PROC NEARMOV AH,02MOV DL,0DHINT 21HMOV AH,02MOV DL,0AHINT 21HRETCRLF ENDPBIN_DEC PROC NEARPUSH BXPUSH CXAND AX,00FFHMOV CX,0MOV BX,0MOV DL,10ROTATE:DIV DLMOV BL,AHAND AX,00FFHPUSH BXINC CXCMP AX,10JAE ROTATEMOV BX,AXPUSH BXINC CXCONTINUE:POP BXADD BL,30HMOV DL,BLMOV AH,02HINT 21HLOOP CONTINUEPOP CXPOP BXRETBIN_DEC ENDPCODE ENDSEND START运行结果:实验三实验要求:假设已编制好五个歌曲程序,它们的段地址和偏移地址存放在数据段的跳转表SONGLIST 中。

试编一程序,根据从键盘输入的歌曲编号1~ 5 ,转去执行五个歌曲程序中的一个。

程序流程图:开始宏定义SONGLIST的地址等显示SONGLIST歌曲名使键盘1,2,3,4,5分别指向这5首歌的地址显示”请输入歌曲编号(范围:1-5)“显示输入歌曲编号播放所点歌曲是判断是否继续否结束程序清单:DATA SEGMENTSONGLIST DW MUSIC1,MUSIC2,MUSIC3,MUSIC4,MUSIC5 DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXREADLIST:MOV AH,1INT 21HSUB AL, '0'CMP AL,0JE EXITCMP AL,5JA READLISTDEC ALMOV BX,0MOV BL,ALADD BX,BXJMP SONGLIST[BX]JMP READLIST MUSIC1:MOV DL, '1'MOV AH,2INT 21HJMP EXITMUSIC2:MOV DL, '2'MOV AH,2INT 21HJMP EXITMUSIC3:MOV DL, '3'MOV AH,2INT 21HJMP EXITMUSIC4:MOV DL, '4'MOV AH,2INT 21HJMP EXITMUSIC5:MOV DL, '5'MOV AH,2INT 21HJMP EXITEXIT:MOV AX,4C00HINT 21HCODE ENDSEND START运行结果:实验四实验要求:试编写一个程序,从键盘接收一个个位数N,然后响铃N次。

(响铃的ASCII码为07H)。

程序流程图:开始宏定义显示“请输入响铃次数:”结束N>0?输入一个数nN--输出响铃1次是否程序清单:DATA SEGMENTTIP DB 'PLEASE INPUT A NUMBER:','$'DATA ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASTART :MOV AX,DATAMOV DS,AXLEA DX,TIPMOV AH,09HINT 21HMOV AH,01HINT 21HAND AX,01HMOV CX,AXBE:MOV DL,07HMOV AH,02HINT 21HLOOP BECODES ENDSEND START运行结果:输入数字后听到对应次数的响铃实验五实验要求:从键盘输入一系列以$ 为结束符的字符串,然后对其中的非数字字符计数,并显示计数结果。

程序流程图:开始结束暗字符串顺序判断字符是否为数字宏定义显示“请输入字符串,以$结尾:”对字符串处理,并记录字符个数n计数i (初值为0)++显示”非数字字符数为:i “n>0?n--是否是否程序清单:DATA SEGMENTS1 DB 0DH,0AH,'PLEASE INPUT : $'S2 DB 0DH,0AH,'TOTAL NON_DIGITAL ARE:$' NUM DB 0DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART :PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXLEA DX,S1MOV AH,9INT 21H NEXT:MOV AH,01INT 21HCMP AL,'$'JE DOWNCMP AL,'0'JB NO09CMP AL,'9'JA NO09JMP NEXT NO09:INC NUMJMP NEXT DOWN:LEA DX,S2MOV AH,9INT 21HMOV AL,NUMMOV AH,0MOV DL,100DIV DLCALL DISP_PMOV AL,AHMOV AH,0MOV DL,10DIV DLCALL DISP_PXCHG AH,ALCALL DISP_PRETDISP_P PROC NEARPUSH AXMOV DL,ALADD DL,30HMOV AH,2INT 21HPOP AXRETDISP_P ENDPCODE ENDSEND START运行结果:实验六实验要求:试编制一个程序,把AX中存放的16进制数转换为ASCII码,并将对应的ASCII 码依次存放在MEM数组中的四个字节中。

例如:当(AX)= 2A49H时,程序执行完后,MEM中的四个字节的内容为39H,34H,41H,32H。

程序流程图:开始宏定义输入一个16进制数并送给AX将AX中数转换为ASCII码形式将各ASCII码由低位依次送给MEM四个字节显示MEM中的内容结束程序清单:DATA SEGMENTMEM DB 4 DUP (?)N DW2A49HDATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART:PUSH DSSUB AX, AXPUSH AXMOV AX, DATAMOV DS, AXBEGIN:MOV CH, 4MOV CL, 4MOV AX, NLEA BX, MEMROTATE:MOV DL, ALAND DL, 0FHADD DL, 30HCMP DL, 3AHJL NEXTADD DL, 07HNEXT:MOV[BX], DLINC BXROR AX, CLDEC CHJNZ ROTATERETCODE ENDSEND START运行结果:实验七实验要求:设有十个学生的成绩分别是76,69,84,90,73,88,99,63,100,80分,试编制一个子程序统计60 ~ 69分,70 ~ 79分,80 ~ 89分,90 ~ 99分和100分的人数,分别存放在S6,S7,S8,S9和S10单元中。

相关主题