; 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 ;a口位址
portb equ 0301h ;b口位址
code segment
assume cs:code
start:
mov dx,cs8255 ;8255初始化
mov al,90h
out dx,al
main: mov dx,porta ;讀pa資料
in al,dx
mov dx,portb ;資料寫pb
out dx,al
jmp main
code ends
end start
; 8255控制交通燈
; 連線:
; 8255 cs --- 埠位址 300cs
; 8255 pa0 -- 發光二極體 l1 -- a道黃燈
; 8255 pa1 -- 發光二極體 l2 -- a道綠燈
; 8255 pa2 -- 發光二極體 l3 -- a道紅燈
; 8255 pa3 -- 發光二極體 l5 -- b道黃燈
; 8255 pa4 -- 發光二極體 l6 -- b道綠燈
; 8255 pa5 -- 發光二極體 l7 -- b道紅燈
cs8255 equ 0303h ;控制埠位址
porta equ 0300h ;a口位址
code segment
assume cs:code
start:
mov dx,0303h ;控制口位址
mov al,88h
out dx,al
mov dx,0300h ;a口位址
;a綠 b紅
mloop: mov al,011101b
out dx,al
call delayl
;;;a黃燈閃爍 b紅
mov cx,3
slp1:
mov al,011110b
out dx,al
call delays
mov al,011111b
out dx,al
call delays
loop slp1
;;;a紅燈 b道綠燈
mov al,101011b ;a紅 b綠
out dx,al
call delayl
;;; ;a道紅燈 b道黃燈閃
mov cx,3
slp2: mov al,110011b
out dx,al
call delays
mov al,111011b
out dx,al
call delays
loop slp2
jmp mloop
;;;延時子程式 delayl
delayl proc near
push cx
mov cx,0018h
dl1: call delays
loop dl1
pop cx
retdelayl endp
;;;延時子程式 delays
delays proc near
push cx
mov cx,9000h
loop $
pop cx
retdelays endp
code ends
end start
;a口輸出,b口輸入
; 8255 cs --- 埠位址 300cs
; 8255 pa0 -- 發光二極體 l1 -- a道黃燈
; 8255 pa1 -- 發光二極體 l2 -- a道綠燈
; 8255 pa2 -- 發光二極體 l3 -- a道紅燈
; 8255 pa3 -- 發光二極體 l5 -- b道黃燈
; 8255 pa4 -- 發光二極體 l6 -- b道綠燈
; 8255 pa5 -- 發光二極體 l7 -- b道紅燈
; 8255 pb0- 低電平
; 8255 pb1 -低電平
cs8255 equ 0303h
porta equ 0300h
portb equ 0301h
code segment
assume cs:code
start:
;8255初始化
mov dx,cs8255
mov al,82h;a口輸出 b口輸入
out dx,al
main:
;讀b口資料
mov dx,portb
in al,dx
;k0按下 (有消防車或者救護車經過)
cmp al,00000001b
jz red_all
jmp yelloe_all
jmp main
;;;;;;;;;;;;;;;;;;;;;;;;;;;;緊急情況下全亮紅燈;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
red_all:
mov dx, porta
mov al,011011b
out dx,al
jmp main
;;;;;;;;;;;;;;;;;;;;;;;;;;;;黃燈;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
yelloe_all:
mov dx,0300h ;a口位址
;a綠 b紅
mloop: mov al,011101b
out dx,al
call delayl
;;;a黃燈閃爍 b紅
mov cx,3
slp1:
mov al,011110b
out dx,al
call delays
mov al,011111b
out dx,al
call delays
loop slp1
;;;a紅燈 b道綠燈
mov al,101011b ;a紅 b綠
out dx,al
call delayl
;;; ;a道紅燈 b道黃燈閃
mov cx,3
slp2: mov al,110011b
out dx,al
call delays
mov al,111011b
out dx,al
call delays
loop slp2
jmp mloop
;;;延時子程式 delayl
delayl proc near
push cx
mov cx,0018h
dl1: call delays
loop dl1
pop cx
retdelayl endp
;;;延時子程式 delays
delays proc near
push cx
mov cx,9000h
loop $
pop cx
retdelays endp
jmp main
code ends
end start
當先經過特殊車輛時,可以正常執行;然而,當先正常執行時,遇到緊急車輛,無法正常執行 彙編實驗(二)
test 和 and 區別在於不改變op1 shr 如果要多移幾次 mov cl,4 shr dl,cl 判斷陣列裡正負數 並分開存放 assume cs code,ds data data segment m db 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17...
彙編實驗(三)
迴圈程式設計 1.如何輸出自定義變數2.21h中斷 1號輸入 2號輸出 乙個字元 data segment man db 0 woman db 0 count equ 10 disp db 0dh,0ah,man or woman 1 0?disp1 db 0dh,0ah,man disp2 db ...
彙編求和實驗
設在a b和d字單元中分別存放著三個數。若三個數都不是0,則求出三個數的和並存放在s單元中 若其中有乙個數為0,則把其他兩個單元也清零。如有錯誤,請各位大神指導!如下 datas segment a dw 1 b dw 2 d dw 6 count dw a 2 tip db the number ...