75 lines
1.1 KiB
NASM
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
|
||
|
|
||
|
|