390 / 178 / 2
Регистрация: 14.03.2012
Сообщений: 443
1

Изначальное состояние регистров

14.03.2012, 07:46. Показов 3520. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Интересует следующий вопрос. Всегда ли в ДОСовском ассемблере регистры AX, BX, CX, DX изначально равны нулю? Допустим имеется код:

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
CSEG segment
org 100h
 
start:
 
 ; Вычислить значение выражения (53+8)*2 + (150-60)/3. 
 ; Полученный результат записать в регистр DX. Ответ: 152
 
    mov al,150
    sub al,60
    mov bl,3
    div bl
    
    mov dl,al
    
    mov al,53
    add al,8
    shl al,1
    
    add dl,al
    
    int 20h
 
CSEG ends
end start
Нужно ли перед началом исполнения обнулять регистры AX, BX и DX? Или же это будет лишний код. Ведь если данные регистры не будут обнулены, программа может сработать некорректно.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.03.2012, 07:46
Ответы с готовыми решениями:

FASM printf изменяет состояние регистров
Доброго времени суток ув форумчане, поиск юзал, нужного не нашел вот и прошу вас добрые люди...

Как изменится состояние регистров после выполнения PUSH AX и POP DX
Учусь на заочке и тут по архитектуре аппаратных средств прилетает практическая работа, а в ней...

Вывод на экран двоичного содержимого двух регистров (ввести значения этих регистров требуется с клавиатуры)
требуется разработать программу вывода на экран двоичного содержимого двух регистров так, чтобы...

Вычисление смещения дескрипторов по таблице состояние основных регистров процессора при выполнении задачи в Protect Mode
Начал изучать ассемблер, застрял на таком задании В приведенной ниже таблице показано состояние...

3
Ушел с форума
Автор FAQ
15893 / 7467 / 1012
Регистрация: 11.11.2010
Сообщений: 13,449
14.03.2012, 09:10 2
_lucius_, а самому проверить слабо? Мало ли что тебе насоветуют? Да и в книжках бывают ошибки... Что касается СОМ-программ, то обычно AX=BX=DX=SI=DI=BP=0 SP=FFFE CX= длине СОМ-файла в байтах IP=100h CS=ES=DS=SS=HS=FS=адрес PSP. Нужно ли регистры обнулить? Это только тебе решать. Сработает ли программа некорректно? Это зависит от кривизны рук программиста
Теперь, то что касается конкретно твоего примера, перед делением на байт желательно AH обнулить
Assembler
1
2
3
4
5
6
7
8
9
10
        mov ax,150
        sub ax,60
        mov bl,3
        div bl
        mov dh,0        
        mov dl,al        
        mov ax,53
        add ax,8
        add ax,ax        
        add dx,ax
и тогда твое вычисление будет работать правильно вне зависимости от того, где оно расположено в начале программы или в ее конце
1
390 / 178 / 2
Регистрация: 14.03.2012
Сообщений: 443
14.03.2012, 09:16  [ТС] 3
Mikl___, спасибо большое за ответ. Я проверял, но проверял на виртуалке. Там они всегда равны нулю. Думал просто вдруг в MS-DOS может оказаться иначе. В общем решил, что лучше все-таки обнулять и не рассчитывать на то, что эти регистры 100%’но равны нулю. Мало ли что.
0
Ушел с форума
Автор FAQ
15893 / 7467 / 1012
Регистрация: 11.11.2010
Сообщений: 13,449
14.03.2012, 09:33 4
Цитата Сообщение от _lucius_ Посмотреть сообщение
В общем решил, что лучше все-таки обнулять и не рассчитывать на то, что эти регистры 100%’но равны нулю. Мало ли что.
Когда программист ложится спать, то рядом с кроватью на тумбочку ставит два стакана, один с водой, а другой пустой. Первый на тот случай, если ночью захочется пить, а второй — на тот случай, если пить не захочется
Мало ли что.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.03.2012, 09:33
Помогаю со студенческими работами здесь

Установить состояние регистров клавиатуры
Установить такое состояние регистров клавиатуры: NUM LOCK - выключен, CAPS LOCK - включен, SCROLL...

Запомнить изначальное состояние страницы, дабы потом сверить с текущим
Есть ли какой-нибудь метод, который обрабатывает первичную загрузку страницы? Необходимо запомнить...

Как посмотреть состояние регистров msc-51 название чего надо установить?
Составить программу на языке ассемблера для микроконтроллера семейства MCS-51 фирмы Intel,...

Сложить содержание регистров R1 и R4 текущего банка регистров и отразить результат на статическом индикаторе
Сложить содержание регистров R1 и R4 текущего банка регистров и отразить результат на статическом...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru