1、 MOV AL,SI MOV BL,DI CMP AL,BL JNE DISMATCH INC SI INC DI LOOP COMPAREMATCH:LEA DX,MESSAGE1 JMP DISPDISMATCH:LEA DX,MESSAGE2DISP: MOV AH,09H INT 21H MOV AH,4CHCODE ENDSEND START实验二:编写程序,从键盘输入一串字符,以$或回车结束,将其中的小写字母转变为大写字母,其余字符不做转换,原样输出,结果显示在屏幕上。BUF DB 50 DB ? DB 50 DUP(?)INPUTSTRING DB PLEASE INPUT A
2、STRING:,OUTPUTSTRING DB OUTPUTSTRING IS:ENTERSTRING DB 0DH,0AH,ASSUME CS:MOV AX,DATA LEA DX,INPUTSTRING LEA DX,BUF MOV AH,0AH LEA DX,ENTERSTRING LEA BX,BUF ADD BX,2NEXT1:MOV AL,BX INC BXCMP AL,24H JZ DISP CMP AL,61H JB NEXT1 CMP AL,7AH JA NEXT1 SUB AL,20H MOV BX-1,AL JMP NEXT1LEA DX,OUTPUTSTRING LEA
3、 DX,BUF+2 END START实验三:利用子程序方法编写程序,设有10个无符号数的字节序列,查找该序列中的最大值和最小值,并把结果显示在屏幕上。参考程序1:(针对一位10进制数)STACK SEGMENT STACK DW 256 DUP(?) TOP LABEL WORDSTACK ENDSBUF DB 00H,01H,02H,03H,04H DB 05H,06H,07H,08H,09HCOUNT EQU $-BUFMAXSTRING DB THE MAXIMUN NUMBER IS:MINSTRING DB THE MINIMUN NUMBER IS:DATA,SS:STACK M
4、OV AX,STACK MOV SS,AX LEA SP,TOP MOV SI,OFFSET BUF MOV CX,COUNT CALL BRANCH PUSH AX LEA DX,MAXSTRING POP AX MOV DL,AH ADD DL,30H MOV AH,02H LEA DX,MINSTRING MOV DL,ALBRANCH PROC NEAR JCXZ NEXT4 PUSH SI PUSH CX PUSH BX MOV BH,SI MOV BL,BH CLD LODSB CMP AL,BH JBE NEXT2 MOV BH,AL JMP NEXT3NEXT2: JAE NE
5、XT3 MOV BL,ALNEXT3: LOOP NEXT1 MOV AX,BX POP BX POP CX POP SINEXT4: RETBRANCH ENDP参考程序二:(针对两位十六进制数或无符号数)BUF DB 0FFH,55H,33H,44H,54H DB 45H,46H,47H,48H,1AH MOV DX,AX PUSH DX POP DX MOV AL,DH CALL DISPGAO4 CALL DISPDI4 MOV AL,DLDISPDI4 PROC NERR ;低四位 AND AL,0FH MOV DL,AL CMP DL,9 JLE NUM1 ADD DL,7NUM1
6、: ADD DL,30H MOV AH,02H INT 21H RETDISPDI4 ENDPDISPGAO4 PROC NERR ;高四位 SAR AL,4 JLE NUM2NUM2:DISPGAO4 ENDP实验四:8255交通灯MY8255_A EQU 288H ;8255的A口地址MY8255_B EQU 289H ;8255的B口地址MY8255_C EQU 28AH ;8255的C口地址MY8255_MODE EQU 28BH ;8255的控制寄存器地址STACK1 SEGMENT STACKSTACK1 ENDSDATA SEGMENT LA DB ? ;定义数据变量LB DB
7、? MOV DX,MY8255_MODE ;定义8255工作方式 MOV AL,80H ;工作方式0,A口和B口为输出 OUT DX,ALL1: MOV DX,MY8255_A ;写A口发出的数据,1组绿灯亮,2组红灯亮 MOV AL,24H CALL DALLY1 MOV CX,05HL2:写A口发出的数据,1组黄灯亮,2组红灯亮 MOV AL,44H CALL DALLY2 写A口发出的数据,1组黄灯灭,2组红灯亮 MOV AL,04H OUT DX,AL CALL DALLY2 LOOP L2L3: MOV AL,81HL4: MOV AL,82H MOV AL,80H LOOP L4L
8、5: MOV AH,01H ;判断是否有按键按下,调用功能号1 INT 16H ;ROM BIOS 功能调用 JZ L1 ;无按键则跳回继续循环,有则退出QUIT: MOV AX,4C00H ;结束程序退出; INT 21H ;DOS 系统功能调用DALLY1 PROC NEAR ;软件延时子程序,东西方向红灯亮,南北方向绿灯亮 PUSH CX PUSH DI MOV CX,3FFHY1: MOV DI,9000HX1: DEC DI JNZ X1 LOOP Y1 POP DI POP CXDALLY1 ENDPDALLY2 PROC NEAR ;软件延时子程序,黄灯闪烁(即亮与灭)的时间间隔
9、, MOV CX,3FHY2:X2: JNZ X2 LOOP Y2 DALLY2 ENDP参考程序2:流水灯 MOV CX,0FFFFH MOV BL,80H 写A口发出的数据 MOV AL,BL ROR BL,1 LOOP L1实验五:8254一赫兹方波输出MY8254_COUNT0 EQU 280H ;8254计数器0端口地址MY8254_COUNT1 EQU 281H ;8254计数器1端口地址MY8254_COUNT2 EQU 282H ;8254计数器2端口地址MY8254_MODE EQU 283H ;8254控制寄存器端口地址CODE MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,37H ;计数器0,方式3 MOV DX,MY8254_COUNT0 ;装入计数初值 MOV AL,00 ;1000分频 MOV AL,10 MOV AL,77H ;计数器1,方式3 MOV DX,MY8254_COUNT1 ;实验六:AD转换(0809) MOV DX,298H ;启动A/D转换器DELAY: LOOP DELAY MOV DX,298H IN AL,DX MOV AH,06H MOV DL,0FFH JE START
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1