Форум программистов, компьютерный форум, киберфорум
Микропроцессоры
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.90/20: Рейтинг темы: голосов - 20, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 10.04.2012
Сообщений: 6
1

Перевод чисел. КР580ВМ80

10.04.2012, 17:06. Показов 3594. Ответов 10
Метки нет (Все метки)

Здравствуйте!
Помогите пожалуйста реализовать программу на КР580ВМ80.
Задача такова:
Преобразовать двухбайтовое 2-10 число в двоичное.
Заранее большое спасибо.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.04.2012, 17:06
Ответы с готовыми решениями:

Эмулятор микропроцессора КР580ВМ80
Если кто-нибудь работал с эмулятором 8-ми разрядного микропроцессора КР580ВМ80, то, пожалуйста,...

КР580ВМ80. Работа с ПЗУ
Добрый день. Пишу курсовую работу на тему "Проектирование микропроцессорной системы для управления...

Микропроцессор КР580ВМ80 (Эмулятор)
Задание: Даны три числа, уменьшить каждое на 42(decimal). Нужно написать код для ассамблера...

Структурная схема цифрового вольтметра на основе КР580ВМ80
Мне необходимо подкорректировать структурную схему цифрового вольтметра,построенную на методе...

10
0 / 0 / 0
Регистрация: 10.04.2012
Сообщений: 6
12.04.2012, 20:38  [ТС] 2
ну пожалуйста, помогите)))
0
10216 / 6596 / 495
Регистрация: 28.12.2010
Сообщений: 21,164
Записей в блоге: 1
12.04.2012, 21:28 3
М. Иванюшин. Учимся программировать КР580ВМ80А
http://junetech.chat.ru/kollection/ut88/uroki.htm

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
;ПРЕОБРАЗОВАНИЕ ДВОИЧНОГО ЧИСЛА 
;В ДВОИЧНО-ДЕСЯТИЧНОЕ
;BCD2B - программа перевода двухбайтного
;двоичного числа в двоично-десятичное.
;Двоичное число передается
;в регистрах HL, 
;результат работы:
;А - десятки тысяч,
;В - тысячи и сотни,
;С - десятки и единицы.
;BCD1B - программа перевода однобайтного
;числа в двоично-десятичный код.
;Двоичное число записывается
;в регистр Н, регистр L сбрасывается.
;результат работы:
;А - разряды сотен,
;В - разряды десятков и единиц.
 
BCD2B:    MVI Е,17     ;установка счетчика
                       ;первого цикла
          CALL CONV    ;вычисление младшего 
                       ;двоично-десятичного байта
          MOV С,А      ;вычисленный результат сохранен
          MVI Е,17     ;установка счетчика
                       ;второго цикла 
          JMP PROD
BCD1B:    MVI E,9      ;установка счетчика 
                       ;для программы BCD1B 
          CALL CONV    ;вычисление двух
                       ;старших байтов
          MOV В,А      ;запомнен промежуточный 
                       ;двоично-десятичный результат
          MOV A,L      ;установка старшего 
                       ;двоично-десятичного байта 
          RET 
CONV:     XRA А        ;сброс регистра А в нуль
SBIT:     DCR E        ;уменьшение на 1 
                       ;счетчика числа циклов 
          RZ
          DAD H        ;сдвиг старших разрядов 
                       ;в перенос 
          ADC A 
          DAA          ;двоично-десятичная коррекция
          JNC SBIT     ;двоично-десятичный 
                       ;байт больше 99?
          INX H        ;да 
          JMP SBIT
Обратите внимание, как в строке с меткой CONV: устанавливается в нуль регистр А. Операция ИСКЛЮЧАЮЩЕЕ ИЛИ аккумулятора с самим собой обнулит его, а также сбросит и бит переноса. Приведенные программы полезны, если необходимо выводить на экран результаты вычислений.

А как быть, если необходимо преобразовать однобайтное или двухбайтное десятичное число в двоичное? Это не сложно. Для этого надо выделить биты, определяющие десятки тысяч, и умножить их на 10000, затем выделить биты, определяющие тысячи, и умножить на 1000, выделить сотни и умножить на 100, выделить десятки и умножить на 10, и, наконец, выделить единицы. Сложение всех этих чисел даст нужный результат. Все эти действия выполняет следующая программа:

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
;вход в программу: 
;А - десятки тысяч, 
;В - тысячи и сотни,
;С - десятки и единицы.
;результат работы:
;HL - двоичное число.
 
DVH:     LXI D,10000
         CALL UMNOG
         PUSH H        ;обработаны десятки тысяч 
                       ;и сохранены в стеке 
         MOV А,В       ;разряды тысяч занимают 
                       ;четыре старших бита 
         RAR 
         RAR 
         RAR
         RAR           ;разряды тысяч в 
                       ;младших битах 
         ANI 0FH       ;выделены разряды тысяч
         LXI D,1000
         CALL UMNOG    ;обработаны разряды тысяч 
         POP D         ;DE - предыдущий результат 
         DAD D 
         PUSH H 
         MOV A,B 
         ANI 0FH       ;выделены разряды сотен
         LXI D,100 
         CALL UMNOG 
         POP D 
         DAD D 
         PUSH H 
         MOV A,C 
         RAR 
         RAR 
         RAR 
         RAR 
         ANI 0FH       ;выделены разряды десятков 
         LXI D,10 
         CALL UMNOG 
         POP D 
         DAD D 
         MOV A,C 
         ANI 0FH       ;выделены разряды единиц 
         MOV E,A 
         MVI D,0
         DAD D         ;HL - исходное число 
                       ;в двоичном виде 
         RET
1
0 / 0 / 0
Регистрация: 10.04.2012
Сообщений: 6
13.04.2012, 01:27  [ТС] 4
на этот источник я натыкалась, но это преобразование двоичного в 2-10... всё равно большое спасибо!
0
10216 / 6596 / 495
Регистрация: 28.12.2010
Сообщений: 21,164
Записей в блоге: 1
13.04.2012, 10:19 5
но это преобразование двоичного в 2-10
мда-аааа ...для кого интересно выделил жирным следующий участок текста:
А как быть, если необходимо преобразовать однобайтное или двухбайтное десятичное число в двоичное? Это не сложно. Для этого надо выделить биты, определяющие десятки тысяч, и умножить их на 10000, затем выделить биты, определяющие тысячи, и умножить на 1000, выделить сотни и умножить на 100, выделить десятки и умножить на 10, и, наконец, выделить единицы. Сложение всех этих чисел даст нужный результат. Все эти действия выполняет следующая программа:
В посту #3 представлены две программы:
1- ПРЕОБРАЗОВАНИЕ ДВОИЧНОГО ЧИСЛА В ДВОИЧНО-ДЕСЯТИЧНОЕ
2- ПРЕОБРАЗОВАНИЕ ДВУХБАЙТНОГО ДЕСЯТИЧНОГО В ДВОИЧНОЕ

Отсюда делаем вывод, что вы еще и невнимательны.
0
0 / 0 / 0
Регистрация: 10.04.2012
Сообщений: 6
13.04.2012, 11:10  [ТС] 6
да мне надо преобразовать двухбайтовое двоично-десятичное число в двоичную систему, а не десятичное число :"(((
0
10216 / 6596 / 495
Регистрация: 28.12.2010
Сообщений: 21,164
Записей в блоге: 1
13.04.2012, 20:07 7
...всего лишь скорректировать: для перевода двоично-десятичного числа в двоичное нужно прибавлять значение тетрады двоично-десятичного числа к результату, умножить результат на десять столько раз, сколько тетрад в исходном числе.

Алгоритм:
1. Взять старшую тетраду источника.
2. Сдвинуть источник влево на одну тетраду.
3. Прибавить тетраду к результату.
4. Если тетрада не последняя, то умножить результат на 10.
5. Повторять п.1 пока не будут перебраны все тетрады источника.
1
0 / 0 / 0
Регистрация: 10.04.2012
Сообщений: 6
13.04.2012, 20:10  [ТС] 8
Большое спасибо, что уделили внимание такой глупой теме))
Всё, пошла делать задачку.
0
97 / 92 / 0
Регистрация: 24.04.2010
Сообщений: 275
25.04.2012, 21:09 9
Подобная тема на радиокоте
0
0 / 0 / 0
Регистрация: 10.04.2012
Сообщений: 6
25.04.2012, 22:17  [ТС] 10
будьте добры...удалите тему) а то я найти че-т не могу как.
0
10216 / 6596 / 495
Регистрация: 28.12.2010
Сообщений: 21,164
Записей в блоге: 1
25.04.2012, 22:21 11
...темы по просьбам ТС не удаляются.
Что вы не можете найти? Рабочий алгоритм дан.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.04.2012, 22:21

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Умножение однобайтных двоичных чисел. МП КР580ВМ80
Составить программу умножения однобайтных двоичных чисел в командах МП КР580ВМ80. Помогите чем...

Массивы в эмуляторе МП КР580ВМ80
Здравствуйте, подскажите как разработать программу, которая считает количество старших бит,...

Массивы в РОН (Эмулятор МП КР580ВМ80)
Есть задача : Записать массив из 6 элементов (1,2,3,4,5,6) в РОН. Если элемент масс. >3 то...

Помогите написать подпрограмму для МП КР580ВМ80
Не могли бы помочь написать подпрограмму умножения двух однобайтных чисел. Не знаю чем отличается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.