Другие языки программирования и технологии
задача по ассемблеру.помогите!
Дано число 7А. необходимо подсчитать количество нулей в этом числе. полученное число сложить с числом 42, которое расположено в ячейке 82Е1. ответ поместить в ячейку 83FF. ассемблер для КР580
Удачник, у вас ошибка в коде
mvi a,42h
sta 82e1h
mvi a, 7ah ; Записали 7А в аккумулятор (регистр А)
mvi d, 0 ; В регистре D счетчик нулей
mvi c, 8 ; В регистре C счетчик цикла
M1:ral ; Циклический сдвиг аккумулятора. Старший бит выдвигается во флаг переноса CY
jnc M2 ; Проверяем флаг переноса. Если он равен 1, пропускаем следующую команду
inr d ; Если флаг переноса равен 0, прибавляем 1 к счетчику нулей.
M2:dcr c ; Вычитаем счетчик цикла
jnz M1 ; Если он не равен 0, возвращаемся на следующий сдвиг.
lda 82e1h ; Цикл кончился, в D количество 0, в аккумулятор А записываем число 42 из ячейки 82E1
add d ; Здесь ошибка Складываем аккумулятор с регистром D, результат остается в аккумуляторе.
sta 83ffh ; Записываем результат в ячейку 83FF
hlt ; окончание программы
mvi a,42h
sta 82e1h
mvi a, 7ah ; Записали 7А в аккумулятор (регистр А)
mvi d, 0 ; В регистре D счетчик нулей
mvi c, 8 ; В регистре C счетчик цикла
M1:ral ; Циклический сдвиг аккумулятора. Старший бит выдвигается во флаг переноса CY
jnc M2 ; Проверяем флаг переноса. Если он равен 1, пропускаем следующую команду
inr d ; Если флаг переноса равен 0, прибавляем 1 к счетчику нулей.
M2:dcr c ; Вычитаем счетчик цикла
jnz M1 ; Если он не равен 0, возвращаемся на следующий сдвиг.
lda 82e1h ; Цикл кончился, в D количество 0, в аккумулятор А записываем число 42 из ячейки 82E1
add d ; Здесь ошибка Складываем аккумулятор с регистром D, результат остается в аккумуляторе.
sta 83ffh ; Записываем результат в ячейку 83FF
hlt ; окончание программы
Примерно так
0000 MVI A, 7AH ; Записали 7А в аккумулятор (регистр А)
0002 MVI D, 0 ; В регистре D счетчик нулей
0004 MVI C, 8 ; В регистре C счетчик цикла
0006 RLC ; Циклический сдвиг аккумулятора. Старший бит копируется во флаг переноса FC
0007 JNC 000B ; Проверяем флаг переноса. Если он равен 1, пропускаем следующую команду
000A INR D ; Если флаг переноса равен 0, прибавляем 1 к счетчику нулей.
000B DCR C ; Вычитаем счетчик цикла
000C JNZ 0006 ; Если он не равен 0, возвращаемся на следующий сдвиг.
000F LDA 82E1 ; Цикл кончился, в С количество 0, в аккумулятор А записываем число 42 из ячейки 82E1
0012 ADD C ; Складываем аккумулятор с регистром С, результат остается в аккумуляторе.
0013 STA 83FF ; Записываем результат в ячейку 83FF
0016 HLT ; окончание программы
0000 MVI A, 7AH ; Записали 7А в аккумулятор (регистр А)
0002 MVI D, 0 ; В регистре D счетчик нулей
0004 MVI C, 8 ; В регистре C счетчик цикла
0006 RLC ; Циклический сдвиг аккумулятора. Старший бит копируется во флаг переноса FC
0007 JNC 000B ; Проверяем флаг переноса. Если он равен 1, пропускаем следующую команду
000A INR D ; Если флаг переноса равен 0, прибавляем 1 к счетчику нулей.
000B DCR C ; Вычитаем счетчик цикла
000C JNZ 0006 ; Если он не равен 0, возвращаемся на следующий сдвиг.
000F LDA 82E1 ; Цикл кончился, в С количество 0, в аккумулятор А записываем число 42 из ячейки 82E1
0012 ADD C ; Складываем аккумулятор с регистром С, результат остается в аккумуляторе.
0013 STA 83FF ; Записываем результат в ячейку 83FF
0016 HLT ; окончание программы
Похожие вопросы
- Простая задача на FASM (ассемблер) помогите 3 дня мучаюсь!!!
- Помогите решить задачу на ассемблере!!!
- помогите пожалуйста с задачей по ассемблеру 8086
- Ассемблер. помогите решить!!!
- Создание алгоритма для решения задачи на Ассемблере!
- Пожалуйста решите задачу на Ассемблере
- задача на ассемблере: ввести предложение и заменить в нем символ "а" на символ "о" и наоборот Напишите код пожалуйста
- Проверьте простую задачу на Ассемблере
- Задачи для Ассемблер
- АССЕМБЛЕР ПОМОГИТЕ! Задали на учебе пример на автомат. Помогите умоляю. Программа emu8086.