2012-04-23 4 views
1

У меня есть задание создать программу, которая преобразует deci (-32,768 через 32,767) в bin. Выход должен отображать все 16 бит. Например, если вход равен 120, выход должен быть: 0000000001111000. Я не могу понять, как выводить 0 и 1 в обратном порядке. Когда я вхожу в 120, я получаю: 0001111000000000. P.S: Я использую ассемблер и симулятор Pep/8 (http://code.google.com/p/pep8-1/), который доступен для Mac и ПК. Это то, что я до сих пор:Конвертер Deci to bin (ассемблер и симулятор Pep/8)

;Pavel; Assignment 3 
BR  main    ;Branch to MAIN 
num:  .BLOCK 2   ;Input variable 
flag: .BLOCK 2   ;C flag 
limit: .BLOCK 2   ;Loop LIMIT 
main: LDA  0, i  ;Clear Accumulator 
     DECI num, d  ;Input 
loop: LDA  limit, d ;Load loop LIMIT 
     CPA  16, i  ;Compare LIMIT to 16 
     BREQ exit  ;If LIMIT == 16, branch to EXIT. Done converting. 
     LDA  num, d  ;Load NUM 
     ASRA    ;Shift NUM to the right (division by 2) 
     STA  num, d  ;Store NUM after division 
if:  MOVFLGA    ;Load flags to Accumulator 
     BRC  else  ;If C == 1, branch to ELSE 
     DECO 0, i  ;Output 0 
     LDA  limit, d ;Load LIMIT 
     ADDA 1, i  ;Add 1 to LIMIT 
     STA  limit, d ;Store LIMIT 
     BR  loop  ;Branch to LOOP 
else: DECO 1, i  ;Output 1 
     LDA  limit, d ;Load LIMIT 
     ADDA 1, i  ;Add 1 to LIMIT 
     STA  limit, d ;Store LIMIT 
     BR  loop  ;Branch to LOOP 
exit: CHARO ' ', i  ;Outputs space 
     STOP 
     .END 

ответ

2

Вы теперь сдвигая вправо и тестирование бит, который заканчивается в ручной клади. Что произойдет, если вы перейдете в другую сторону?

+0

Сдвиг влево умножается на 2. – Rndpbs

+0

О, мой плохой, я получил тебя. Большое спасибо. – Rndpbs