Автор: na_ta_li 20.11.2006 1:28
Люди! Братья! Сестры! Помогите понять как преобразовать 16-разрядный двоично-десятичный код в двоичный. Самое главное на Assembler К580.
Автор: xds 20.11.2006 15:26
Код
lxi h,0x1234 ;BC = 0x1234
call bcd2bin
;BC = 0x4D2 (= 1234)
hlt
;BC = (H >> 4) * 1000 + (H & 0xF) * 100 + (L >> 4) * 10 + (L & 0xF)
bcd2bin
lxi b,0 ;BC = H >> 4
mov a,h
rrc
rrc
rrc
rrc
call add_al
call mul10 ;BC = BC * 10
mov a,h ;BC = BC + (H & 0xF)
call add_al
call mul10 ;BC = BC * 10
mov a,l ;BC = BC + (L >> 4)
rrc
rrc
rrc
rrc
call add_al
call mul10 ;BC = BC * 10
mov a,l ;BC = BC + (L & 0xF)
call add_al
ret
;BC = BC + (A & 0xF)
add_al
ani 0xF
add c
mov c,a
mvi a,0
adc b
mov b,a
ret
;BC = BC * 10
mul10
call shl
mov d,b
mov e,c
call shl
call shl
mov a,c
add e
mov c,a
mov a,b
adc d
mov b,a
ret
;BC = BC << 1
shl
ora a
mov a,c
ral
mov c,a
mov a,b
ral
mov b,a
ret
Автор: na_ta_li 20.11.2006 20:42
спасибо xds!
теперь есть чем выходные занять,разобратся, что к чему и почему выдается ошибка
lxi h,0x1234 ;BC = 0x1234
***** UNDEFINED SYMBOL *****
и
ani 0xF
***** UNDEFINED SYMBOL *****
Автор: xds 20.11.2006 21:03
Цитата(na_ta_li @ 20.11.2006 23:42)
почему выдается ошибка
lxi h,0x1234 ;BC = 0x1234
***** UNDEFINED SYMBOL *****
и
ani 0xF
***** UNDEFINED SYMBOL *****
Это шестнадцатеричные константы. Просто выясни, как они правильно записываютя в ассемблере (в смысле компилятора), который ты используешь (может быть, например, 1234h и 0Fh соответственно).