第一题(10分)
在汇编语言里面的回车和换行代码
回车:
MOV DL,0DH
MOV AH, 09H
INT 21H
换行:
MOV DL,0AH
MOV AH, 09H
INT 21H
第二题(10分)
计数器二设置为方式0,初值设置为3000
MOV AL, 0B0H ;1011 0000
MOV DX, 283H ;设置计数器2-先读写低,再读写高-工作方式0-二进制
OUT DX, AL
MOV AX, 3000 ;设置计数初值
MOV DX, 282H ;将计数初值传入计数器2
OUT DX, AL ;先低位后高位
MOV AL, AH
OUT DX, AL
第三题(75分)
输入字符串,长度大于5则令L2和L6交替闪烁,否则常亮L3L4
第一问(10分)
画出连线简图
如图
第二问(45分)
写出程序代码
DATA SEGMENT ;定义数据段
BUF DB 30 ;定义字符输入缓冲区,最大长度30
DB ? ;存储字符串长度
DB 30 DUP(0) ;实际存储内容
DATA ENDS ;数据段定义结束
CODE SEGMENT ;定义代码段
ASSUME CS:CODE, DS:DATA ;关联段名与段寄存器
START: MOV AX, DATA
MOV DS, AX ;数据段段地址初始化
MOV AL,80H ;8255A的1000 0000控制字
MOV DX,28BH ;段码地址
OUT DX,AL ;写入控制字
LEA DX, BUF ;获取BUF偏移地址存入DX,以在后面存入数据
MOV AH, 0AH ;键盘缓冲输入中断指令,将从键盘输入的字符串存在BUF,回车结束
INT 21H
LEA SI, BUF+1 ;取字符串长度送至CL
MOV AL,[SI] ;将字符串长度存入AL,接下来比较是否大于5
MOV CL,[SI]
MOV CH, 00H ;将高位设为0,是为了接下来LOOP使用CX循环
CMP AL,5 ;将AL里面的值和5对比看是否需要循环
JA FLASH ;大于则跳到闪烁
JBE EVERBRIGHT ;小于等于则跳到常亮
EVERBRIGHT:
MOV AL,00011000B ;L3L4亮灯输出
MOV DX,28AH ;C口输出
OUT DX,AL
MOV AH, 4CH
INT 21H ;结束
FLASH:
MOV AL,00000100B ;L2亮灯输出
MOV DX,28AH ;C口输出
OUT DX,AL
CALL DELAY ;调用延时
MOV AL,01000000B ;L6亮灯输出
MOV DX,28AH ;C口输出
OUT DX,AL
CALL DELAY ;调用延时
LOOP FLASH ;循环闪烁
MOV AH, 4CH
INT 21H ;结束
DELAY PROC ;延时子程序定义
PUSH CX
PUSH DI
MOV CX,2000H
Y1: MOV DI,2000H
X1: DEC DI
JNZ X1
LOOP Y1
POP DI
POP CX
RET
DELAY ENDP
CODE ENDS
END START
第三问(20分)
老师验收结果,不用写
第四题(5分)
整理实验台