汇编代码题

前三道题参考汪神博客【微机原理与汇编语言】考点总结

4、 K0-K7接通I/O输入端口的低8位,L0-L7接通I/O输出端口的低8位,INL连接300IN,OUTL连接300OUT,实现如下功能:闭合K0开关,L0-L7依次点亮,间隔2s(调用Delay子程序),其它情况下,L0-L7全部熄灭。

;简单I/O口扩展      19200

; 连线:
; 输入输出 INL ----- 端口地址 300IN
; 输入输出 i0~i7 --- 逻辑电平开关 K0~K7
; 输入输出 OUTL ---- 端口地址 300OUT
; 输入输出 o0~o7 --- 发光二极管 L0~L7
; 输入输出 D0~D7 --- 数据总线 D0~D7

CS_IO   EQU 0300H

CODE    SEGMENT
        ASSUME CS:CODE
START   PROC NEAR
        MOV DX,CS_IO
        MOV DX,0300H
        MOV CL,00000001B
MLOOP:  IN AL,DX
        NOT AL
        TEST AL,01000000B
        JZ STOP
        MOV AL,CL
        OUT DX,AL
        ROL CL,1
        CALL DELAY
        JMP MLOOP

STOP:
        MOV AL,00000000B
        OUT DX,AL
        MOV CL,00000001B
        JMP MLOOP
START    ENDP
         DELAY PROC
         PUSH DX
         PUSH AX
         MOV DX,02H
         MOV AX,0
         L1:
         SUB AX,1
         SBB DX,0
         CMP AX,0
         JNE L1
         CMP DX,0
         JNE L1
         POP AX
         POP DX
         RET
         DELAY ENDP

CODE    ENDS
        END START

5、 IMS连接393分频器的1A,1QD连接2A,2QD连接8253的CLK1,OUT1连接CLK2,OUT2连接一个发光二极管,8253的片选端CS连接300H端口,GATE1和GATE2连接+5V,编程实现发光二极管循环熄灭3秒,闪亮1秒。

; 8253定时计数器

; 连线:
; 8253 CS ------ 端口地址 300CS
; PACK IMS ----- 393 1A
; 393 1QD ------ 8253 CLK1
; 8253 OUT1 ---- 8253 CLK2
; 8253 OUT2 ---- 发光二极管 L?
; 8253 GATE1 -- (A10)+5V
; 8253 GATE2 -- (A10)+5V

; 运行:
; 运行程序,发光二极管1s周期闪烁

CS8253  EQU 0303H
COUNT0  EQU 0300H
COUNT1  EQU 0301H
COUNT2  EQU 0302H

CODE    SEGMENT
        ASSUME CS:CODE

START   PROC NEAR
        MOV DX,CS8253
        MOV AL,01110110B
        OUT DX,AL

        MOV DX,COUNT1
        MOV AX,19200
        OUT DX,AL
        MOV AL,AH
        OUT DX,AL

        MOV DX,CS8253
        MOV AL,10010100B
        OUT DX,AL

        MOV DX,COUNT2
        MOV AX,4
        OUT DX,AL

        JMP $
START   ENDP

CODE    ENDS
        END START

6、 8255的A口接数码管的a-h,B口连接6个数码管的选通端0-5,8255的片选端CS连接300H端口,数码管显示0-3的编码存放到数据区的LED变量中,编程实现数码管依次显示0,1,2,3,间隔2秒。

; 8255 PA输入 PB输出

; 连线:
; 8255 CS ---------- 端口地址 300CS
; 8255 PA7..PA0 ---- 逻辑电平开关 K7..K0
; 8255 PB7..PB0 ---- 发光二极管 L7..L0

; 运行:
; 全速运行程序,拨动K0~K7,观察L0~L7发光二极管显示

CS8255  EQU 0303H
PORTA   EQU 0300H
PORTB   EQU 0301H

DATA    SEGMENT

BUF     DB 11000000B,11111001B,10100100B,10110000B
DATA    ENDS

CODE    SEGMENT
        ASSUME CS:CODE,DS:DATA

START   PROC NEAR
        MOV DX,CS8255   ;8255初始化
        MOV AL,80H
        OUT DX,AL
okok:   mov si,offset BUF
        mov bl,4

MAIN:
        MOV DX,PORTA    ;读PA数据
        mov AL,[si]
        OUT DX,AL
        MOV DX,PORTB    ;数据写PB
        mov al,000001B
        call delay
        OUT DX,al
        inc si
        sub bl,1
        cmp bl,0
        Ja MAIN
        jmp okok
START   ENDP

        delay proc
        push cx
        push bx
        mov cx ,0ffffh
l0:     mov bx,3

l1:     sub bx,1
        cmp bx,0
        ja l1
        
        dec cx
        cmp cx,0
        ja l0
        pop bx
        pop cx
        
        ret
        delay endp
CODE    ENDS
        END START

7、 8255的A口接数码管的a-h,B口连接6个数码管的选通端0-5,8255的片选端CS连接300H端口,数码管显示0-3的编码存放到数据区的LED变量中,编程实现如下功能:键盘输入‘0’-‘3’之间的字符,数码管显示对应的数值,键盘输入其它字符,数码管没变化。

; 8255 PA输入 PB输出

; 连线:
; 8255 CS ---------- 端口地址 300CS
; 8255 PA7..PA0 ---- 逻辑电平开关 K7..K0
; 8255 PB7..PB0 ---- 发光二极管 L7..L0

; 运行:
; 全速运行程序,拨动K0~K7,观察L0~L7发光二极管显示

CS8255  EQU 0303H
PORTA   EQU 0300H
PORTB   EQU 0301H

DATA    SEGMENT

BUF     DB 11000000B,11111001B,10100100B,10110000B
DATA    ENDS

CODE    SEGMENT
        ASSUME CS:CODE,DS:DATA

START   PROC NEAR
        MOV DX,CS8255   ;8255初始化
        MOV AL,80H
        OUT DX,AL
        mov si,offset BUF

MAIN:
        MOV DX,PORTA    ;读PA数据
        mov ah,1
        int 21h
        sub al,48
        mov ah,0
        add si,ax
        mov AL,[si]
        OUT DX,AL
        MOV DX,PORTB    ;数据写PB
        mov al,000001B
        OUT DX,al
        Jmp MAIN
START   ENDP
CODE    ENDS
        END START

上一篇:特权级转移 之 保护模式下代码段(一致性代码段 非一致性代码段)特权级保护依据


下一篇:贝茜放慢脚步(寒假每日一题 14)