Hardwarenahe_Programmierung/src/asm/a2.asm

75 lines
1.1 KiB
NASM

org 100h
cpu 8086
;0=00111111=3F
;1=00000110=6
;2=01011011=5B
;3=01001111=4F
;4=01100110=66
;5=01101101=6D
;6=01111101=7D
;7=00000111=7
;8=01111111=7F
;9=01101111=6F
;A=01110111=77
;B=11111111=FF
;C=00111001=39
;D=10111111=BF
;E=01111001=79
;F=01110001=71
INPUT equ 0h
LED equ 0h
SEGM equ 90h
; 0 1 2 3 4 5 6 7 8 9 A B C D E F
segtext db 0x3F, 0x6, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x7, 0x7F, 0x6F, 0x77, 0xFF, 0x39, 0xBF, 0x79, 0x71
jmp WDH
WDH: in ax, INPUT
mov bx, ax
and ax, 00001111b;get second nibble
;out LED, ax;debug, output to leds
push ax;write result to stack
mov ax, bx
mov cl, 0x4
shr ax, cl;shift right 4 times
;out LED, ax;debug, output to leds
pop bx;get from stack
sub ax, bx
out LED, ax;output to led
;right seven segment display
push ax
mov bx, segtext
and ax, 0000000000001111b
add bx, ax
mov al, [bx]
out SEGM, al;output to seven segment display
;left seven segment display
pop ax;get from stack
mov cl, 0x4
shr ax, cl
mov bx, segtext
add bx, ax
mov al, [bx]
out SEGM + 0x2, al
jmp WDH