微机A卷复盘

3 篇文章 0 订阅
1 篇文章 0 订阅
该文描述了一个汇编语言程序,用于处理键盘输入的字符串。当输入长度大于5时,程序会让L2和L6LED灯交替闪烁;否则,常亮L3和L4。程序中涉及8255A芯片的控制,以及自定义的延时子程序来实现LED的闪烁效果。
摘要由CSDN通过智能技术生成

第一题(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分)

整理实验台
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值