Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
84
Task/Gray-code/8080-Assembly/gray-code.8080
Normal file
84
Task/Gray-code/8080-Assembly/gray-code.8080
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
org 100h
|
||||
xra a ; set A=0
|
||||
loop: push psw ; print number as decimal
|
||||
call decout
|
||||
call padding ; print padding
|
||||
pop psw
|
||||
push psw
|
||||
call binout ; print number as binary
|
||||
call padding
|
||||
pop psw
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
mov b,a ; gray encode
|
||||
ana a ; clear carry
|
||||
rar ; shift right
|
||||
xra b ; xor the original
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
push psw
|
||||
call binout ; print gray number as binary
|
||||
call padding
|
||||
pop psw
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
mov b,a ; gray decode
|
||||
decode: ana a ; clear carry
|
||||
jz done ; when no more bits are left, stop
|
||||
rar ; shift right
|
||||
mov c,a ; keep that value
|
||||
xra b ; xor into output value
|
||||
mov b,a ; that is the output value
|
||||
mov a,c ; restore intermediate
|
||||
jmp decode ; do next bit
|
||||
done: mov a,b ; give output value
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
push psw
|
||||
call binout ; print decoded number as binary
|
||||
call padding
|
||||
pop psw
|
||||
push psw
|
||||
call decout ; print decoded number as decimal
|
||||
lxi d,nl
|
||||
call strout
|
||||
pop psw
|
||||
inr a ; next number
|
||||
ani 1fh ; are we there yet?
|
||||
jnz loop ; if not, do next number
|
||||
ret
|
||||
;; Print A as two-digit number
|
||||
decout: mvi c,10
|
||||
call dgtout
|
||||
mvi c,1
|
||||
dgtout: mvi e,'0' - 1
|
||||
dgtloop: inr e
|
||||
sub c
|
||||
jnc dgtloop
|
||||
add c
|
||||
push psw
|
||||
mvi c,2
|
||||
call 5
|
||||
pop psw
|
||||
ret
|
||||
;; Print A as five-bit binary number
|
||||
binout: ani 1fh
|
||||
ral
|
||||
ral
|
||||
ral
|
||||
mvi c,5
|
||||
binloop: ral
|
||||
push psw
|
||||
push b
|
||||
mvi c,2
|
||||
mvi a,0
|
||||
aci '0'
|
||||
mov e,a
|
||||
call 5
|
||||
pop b
|
||||
pop psw
|
||||
dcr c
|
||||
jnz binloop
|
||||
ret
|
||||
;; Print padding
|
||||
padding: lxi d,arrow
|
||||
strout: mvi c,9
|
||||
jmp 5
|
||||
arrow: db ' ==> $'
|
||||
nl: db 13,10,'$'
|
||||
Loading…
Add table
Add a link
Reference in a new issue