Чего здесь у меня не хватает? Код внутри.

Низкоуровневое программирование портов, микроконтроллеров и т.д.

Модератор: Andy

Ответить
_guest_
Сообщения: 2
Зарегистрирован: 22 июн 2006, 15:11
Откуда: Internet
Контактная информация:

Требуется переводить числа в 16-ричную СС.

Код: Выделить всё

stk segment stack ; начало программы
  db 256 dup(?)
stk ends

data segment ; определяем сегмент данных
  tab db '0123456789ABCDEF'
  buf db 6,00,6 dup(?)
  mes db 10,13,'$'
  msg db 'Input here:$'
data ends ; конец сегмента данных

code segment ; определяем сегмент кода
  assume cs:code,ss:stk,ds:data
    proc16 proc ; процедура перевода в шестнадцатеричную систему счисления
    mov bl,dh
    mov cl,4
    shr bl,cl
    and bl,00001111b
    xor bh,bh
    mov dl,tab[bx]
    mov ah,2h
    int 21h
    mov bl,dh
    and bl,00001111b
    xor bh,bh
    mov dl,tab[bx]
    mov ah,2h
    int 21h
    ret
  proc16 endp ; завершение процедуры
code ends
end start

Препод отправил подумать. подумал -- не думается. Хотя понимаю, что ответ на поверхности, что-то очень легкое... Заранее благодарен за помощь.
BBB
Сообщения: 1298
Зарегистрирован: 27 дек 2005, 13:37

Да вроде, на первый взгляд, верно все... По крайней мере, в логике алгоритма. Разве что после shr bl,cl делать and bl,00001111b не обязательно - старшие 4 бита и так уже нулевые после сдвига.

Может, какая-то тонкость в самом языке? Типа, писать mov dl,DS:tab[bx]? Так, вроде, не обязательно, по умолчанию и так регистр DS в командах перемещения подразумевается...
_guest_
Сообщения: 2
Зарегистрирован: 22 июн 2006, 15:11
Откуда: Internet
Контактная информация:

Что-то до меня, похоже, дошло. Я не написал сегмент вызова процедуры, или ее исполнения... Если это так, что не отказался бы от помощи...
Виталий Митин
Сообщения: 1
Зарегистрирован: 23 июн 2006, 00:13
Откуда: Украина, Днепропетровск
Контактная информация:

Братишка, у меня валялся где-то хороший исходник... Я завтра выложу его... ну и твой гляну что к чему. Надеюсь будем помагать друг другу)))
Ответить