Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2020, 13:26   #1
Pichat
Новичок
Джуниор
 
Регистрация: 26.04.2020
Сообщений: 1
По умолчанию Найти ошибку в коде (задание по учёбе)

Здесь должна быть одна ошибка

Пример программы.

Предположим, что были заданы следующие параметры.

ПЗУ начинается с адреса 0Е000h, ЦАП находится по адресу 1000h, число выборок 50, выборки располагаются в ПЗУ с адреса 0Е000h, основная программа начинается с адреса 0Е100h, ОЗУ располагается по адресу 0000h.


Код:
org 8h

mov [si],al ;вывод выборки на ЦАП

reti ;возврат в основную программу

org 0E100h

mov ax,100h ;организация стека для записи данных

mov ss,ax ;при обращении к подпрограмме обслуживания прерывания

mov [bx],1000h ;запись в регистр bx адреса ЦАП

M1: mov cx,50 ;запись в регистр cx количество выборок

mov si,0E000h ;запись в регистр si адреса начало выборок

M2: mov al,[si] ;запись в регистр al выборки, если выборка больше 1 бата

;тогда необходимо использовать регистр ax

wait ;ожидания прерывания

dec cx ;уменьшаем количество выборок

inc si ;устанавливаем адрес следующей выборки

cmp cx,50 ;проверяем окончания выборок

jz M1 ;если число выборок равно нулю, тогда переходи на М1

jmp М2 ;переход на М2

ORG 0ffff0h

jmp far ptr 0Е100h

ORG 0Е000h ;выборки

00,10,20,30,40,50,60,70,80,90, 00,10,20,30,40,50,60,70,80,90

00,10,20,30,40,50,60,70,80,90, 00,10,20,30,40,50,60,70,80,90

00,10,20,30,40,50,60,70,80,90
Pichat вне форума Ответить с цитированием
Старый 27.04.2020, 12:23   #2
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,162
По умолчанию

[nick]Pichat[/nick],
это ассемблер для х86? Тогда первое что бросается в глаза это строка
Код:
reti ;возврат в основную программу
нет такой команды RETI, есть RETN (NEAR) и RETF (FAR)
Mikl___ вне форума Ответить с цитированием
Старый 30.04.2020, 18:15   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,534
По умолчанию

RETI - это вроде возврат из прерывания. Что оно тут делает ?
digitalis вне форума Ответить с цитированием
Старый 30.04.2020, 19:18   #4
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,162
По умолчанию

@digitalis,
возврат из прерывания IRET, а еще есть RET Imm, возврат и удаление из стека параметров процедуры
Mikl___ вне форума Ответить с цитированием
Старый 30.04.2020, 19:25   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,534
По умолчанию

Ну значит, я с AVR перепутал
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу найти у себя ошибку в коде. Буду благодарен, если вы сможете её найти Agent00x Windows Forms 4 25.11.2018 01:17
Помогите, пожалуйста, найти ошибку в коде (найти сумму факториалов чётных чисел в заданном диапазоне) kris14 Паскаль, Turbo Pascal, PascalABC.NET 8 25.10.2017 15:42
Найти ошибку в коде(vb.net) antagonism Помощь студентам 2 09.01.2017 16:37
Найти ошибку в коде (Для данной целочисленной матрицы размером n*m найти матрицу из 0 и 1...) код на C camel5 Помощь студентам 1 26.11.2013 06:11