微机原理实验整理试题

  • 格式:doc
  • 大小:60.50 KB
  • 文档页数:10

用键盘输入两个字符XY,若X<Y,则通过8255 点亮一盏LED,否则熄灭LED。

CODE SEGMENTASSUME CS:CODESTART:MOV DX,28BH ;置8255控制字为80H,使各端口均工作于方式0,且C口处于输出状态MOV AL,80HOUT DX,ALMOV AH,01H ;输入第一个字符INT 21HMOV BL,AL ;暂存第一个字符在BL中MOV AH,02HMOV DL,0DHINT 21HMOV AH,02HMOV DL,0AHINT 21HMOV AH, 01H ;输入第二个字符INT 21HCMP BL,AL ;比较第一个字符和第二个字符的大小JB BELOW ;如果小于,则跳转MOV DX,28AH ;使用C口MOV AL,00H ;如果大于,则熄灭LEDOUT DX,ALJMP EXITBELOW:MOV DX,28AHMOV AL,01H ; 使用C0口点亮一个灯,可接任意一个LEDOUT DX,ALEXIT:MOV AH,4CHINT 21HCODE ENDSEND START从键盘输入两个数字A,B,求A+B,将结果显示在屏幕上,并用8255 驱动LED 灯显示结果。

CODE SEGMENTASSUME CS:CODESTART:MOV DX,28BH ;置8255控制字为80H,使各端口均工作于方式0,且C口处于输出状态MOV AL, 80HOUT DX,ALMOV AH,01H ;输入第一个数字INT 21HSUB AL,30H ;ASCII码转成实际数字MOV BL,AL ;将输入结果暂存在BL中,因为后面输入还用到ALMOV AH,02HMOV DL,0DHINT 21HMOV AH,02HMOV DL,0AHINT 21HMOV AH,01H ;输入第二个数字INT 21HSUB AL,30H ;ASCII码转成实际数字ADD BL,AL ;将AL和BL中的两个数相加,并把结果存放在BL中MOV DX,288H ;使用8255 的A口驱动LED 灯显示结果MOV AL,BLOUT DX,ALMOV AH,02H ;输出回车MOV DL,0DHINT 21HMOV AH,02H ;输出换行MOV DL,0AHINT 21HCMP BL,10 ;判断和是否大于10JB DISPSUB BL,10 ;大于10的数减去10 就只剩下了个位MOV AH,02H ;输出十位1MOV DL,1+30HINT 21HDISP:ADD BL,30HMOV AH,02H ;输出个位MOV DL,BLINT 21HMOV AX,4CHINT 21HCODE ENDSEND START输入两个字符,相同的话用8255 驱动二极管显示它的ASCII 码,不同的话显示‘NO MATCH’; DA TA SEGMENTSTRI DB 0DH,0AH,’NO MATCH$'DA TA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART:MOV AX,DATAMOV DS,AXMOV DX,28BHMOV AL,80HOUT DX,ALMOV AH,01H ;输入第一个字符INT 21HMOV BL,AL ;结果暂存在BL 中MOV AH,02HMOV DL,0DHINT 21HMOV AH,02HMOV DL,0AHINT 21HMOV AH,01H ;输入第二个字符INT 21HCMP BL,AL ;两个字符相比较JZ MATCH ;相等则用8255 驱动二极管显示它的ASCII 码MOV DX,OFFSET STRI ;输入NO MATCH 字符串MOV AH,09HINT 21HJMP EXITMATCH:MOV DX,288H ;使用8255 A 口输出MOV AL,BLOUT DX,ALEXIT:MOV AX,4CHINT 21HCODE ENDSEND START输入一串字符后用8255 显示第一个字母的ASSII 码,用开关来控制显示和不显示DA TA SEGMENTBUF DB 20 ;最大输入字符数DB ? ;实际输入字符数DB 20 DUP(?) ;字符缓存区DA TA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART:MOV AX,DATAMOV DS,AXMOV DX,28BH ;8255初始化MOV AL,89H ;方式0,A 口输出,C 口输入OUT DX,ALMOV DX,OFFSET BUFMOV AH,0AH ;输入字符串INT 21HMOV DX,28AHIN AL,DX ;读取C 口数据MOV DL,0FFH ;判断是否有按键MOV AH,06HINT 21HJNZ ENDC ; 没有按键打下,则不显示并返回DOS;有按键打下,则默认用8255 输出第一个字母的ASCII 码MOV DX,288H ;使用A口输出MOV AL,[BUF+2] ;第一个字符的偏移地址为2OUT DX,ALENDC:MOV AX,4CHINT 21HCODE ENDSEND START比较两个字符串,判断是否相符。

若相符,则用8253 产生一个 2 秒的方波,用逻辑笔观察;若不符,则逻辑笔显示恒为绿灯。

DA TA SEGMENTSTR1 DB 'www'STR2 DB 'www'DA TA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART:MOV AX,DATAMOV DS,AXMOV SI,OFFSET STR1 ;获取STR1 字符串的偏移地址MOV DI,OFFSET STR2 ;获取STR2 字符串偏移地址MOV CX,3CMPA:MOV AL,[SI]MOV BL,[DI]CMP AL,BLJNE EXIT ;不相等则立刻跳出INC SIINC DILOOP CMPAMOV DX,283HMOV AL,36HOUT DX,ALMOV DX,280HMOV AX,500OUT DX,ALMOV AL,AHOUT DX,ALMOV DX,283HMOV AL,76HOUT DX,ALMOV DX,281HMOV AX,1000OUT DX,ALMOV AL,AHOUT DX,ALEXIT: MOV AH,4CHINT 21HCODE ENDSEND START输入一个字符串,统计它的字符数,用8255控制led闪烁字符数次DA TA SEGMENTBUF DB 30DB ?DB 30 DUP(?)DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART:MOV AX,DATAMOV DS,AXLEA DX,BUF ;输入字符串MOV AH,0AHINT 21HMOV CL,BUF+1 ;输入字符串的字符数MOV CH,0MOV DX,28BH ;8255初始化MOV AL,80HOUT DX,ALX1:MOV DX,288HMOV AL,00000001B ;使用A0口控制任意一个LED亮OUT DX,ALCALL DELAY ;调用短延时MOV AL,00000000B ;控制LED0灭OUT DX,ALCALL DELAY ;调用短延时LOOP X1X2:MOV AH,4CHINT 21HDELAY PROC NEAR ;短延时子程序PUSH CXPUSH DIMOV CX,800HY: MOV DI,800HX: DEC DIJNZ XLOOP YPOP DIPOP CXRETDELAY ENDPCODE ENDSEND START输入小写字母,则LED灯从左到右依次点亮,输入非小写字母则灯全灭若输入字符串:DA TA SEGMENTBUF DB 30DB ?DB 30 DUP(?)DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART:MOV AX,DATAMOV DS,AXMOV DX,28BHMOV AL,80HOUT DX,ALLEA DX,BUFMOV AH,0AHINT 21HMOV CL,BUF+1 ;输入字符串的字符数MOV CH,0LOOP1:LEA SI,BUF+2MOV AL,[SI]CMP AL,61HJB N2CMP AL,7AHJA N2JMP N1INC SILOOP LOOP1MOV CX,7N2:MOV DX,288H ;使用A口MOV AL,00H ;灯全灭OUT DX,ALJMP EXITN1:MOV DX,288H ;使用A口MOV AL,80HOUT DX,ALCALL DELAYMOV AL,40HOUT DX,ALCALL DELAYMOV AL,20HOUT DX,ALMOV AL,10HOUT DX,ALCALL DELAYMOV AL,08HOUT DX,ALCALL DELAYMOV AL,04HOUT DX,ALCALL DELAYMOV AL,02HOUT DX,ALCALL DELAYMOV AL,01HOUT DX,ALEXIT:MOV AH,4CHINT 21HDELAY PROC NEAR ;短延时子程序PUSH CXPUSH DIMOV CX,800HY: MOV DI,800HX: DEC DIJNZ XLOOP YPOP DIPOP CXRETDELAY ENDPCODE ENDSEND START输入一个数字,若输入的是一个数字3,则三个LED灯依次点亮。

不是3就全部熄灭CODE SEGMENTASSUME CS:CODESTART:MOV DX,28BHMOV AL,80HOUT DX,ALMOV AH,01HINT 21HCMP AL,33HJNZ NMOV DX,288H ;使用A口MOV AL,80HOUT DX,ALCALL DELAYMOV AL,40HOUT DX,ALCALL DELAYMOV AL,20HOUT DX,ALJMP EXITN:MOV DX,288H ;使用A口MOV AL,00H ;灯全灭OUT DX,ALEXIT:MOV AH,4CHINT 21HDELAY PROC NEAR ;短延时子程序PUSH CXPUSH DIMOV CX,800HY: MOV DI,800HX: DEC DIJNZ XLOOP YPOP DIPOP CXRETDELAY ENDPCODE ENDSEND START输入两个字符,假设为X,Y,若X-Y=4,则输出4赫兹的方波(用分频)CODE SEGMENTASSUME CS:CODESTART :MOV AH,01HINT 21HMOV BL,ALMOV AH,02HMOV DL,0DHINT 21HMOV AH,02HMOV DL,0AHINT 21HMOV AH,01HINT 21HSUB BL,ALCMP BL,4JZ N1JMP EXITN1:MOV DX,283HMOV AL,36HOUT DX,ALMOV DX,280HMOV AX,500OUT DX,ALMOV AL,AHOUT DX,ALMOV DX,283HMOV AL,76HOUT DX,ALMOV DX,281HMOV AX,500OUT DX,ALMOV AL,AHOUT DX,ALEXIT:MOV AH,4CHINT 21HCODE ENDSEND START。