Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: доступ к отдельным байтам.  (Прочитано 8856 раз)
0 Пользователей и 1 Гость смотрят эту тему.
fromtheinside
Гость
« : 22-11-2008 19:19 » 

Добрый вечер. Ув. специалисты, помогите начинающему. Задача следующая:

 Имеем сегмент данных со следующим содержимым: DS:00       12 34 56 ...
Мне нужно записать в регистр, любой, пусть будет АХ значение первого байта, т.е. "1", но когда я выполняю команду mov ax,[0] в регистр АХ помещается все 4 первых байта, т.е. 3412. Мне же надо ТОЛЬКО поместить в регистр первый байт, а все остальные байты должны быть пусты т.е. нули.
 Я в данным момент работаю со средой DEBUG поэтому прош объяснять относительно именно этой среды, если конечно можно.

П.С. Не спрашивайте зачем мне это надо =)) я выполняю лабораторную по ассемблеру, это одно из заданий, вернее там задание другое, но чтобы его реализовать нужно выполнить нечто подобное что я у Вас спрашиваю.
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 22-11-2008 19:26 » 

Ну ты запрашиваеш 16 бит, и получаеш их. Вот если бы ты сделал
Код:
xor ax, ax
mov al, [0]
то получил бы в ax = 0012h
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
fromtheinside
Гость
« Ответ #2 : 22-11-2008 19:38 » 

Большое спасибо за помошь Finch ! А нельзя ли сделать чтобы именно "1" получить в Ах ? И если Вам не сложно, пожалуйста прокоментируйте что делает первая команда xor и почему мы пишем mov al, а значения попадают в АХ.
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #3 : 22-11-2008 19:56 » 

mov ax, 1 запишет в ax 1

По идее говоря все остальные вопросы это уже учебник. Регистр AX разбивается на 2  восьми разрядных регистра ah и al. Операция xor это булевая операция "Исключаюшая ИЛИ" В таком применении, она просто обнуляет регистр. И в памяти записывается значительно короче, чем mov ax,0
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
fromtheinside
Гость
« Ответ #4 : 22-11-2008 20:07 » 

Спасибо большое, все понял. А какую литературу Вы бы порекомендовали, нас конечно обеспечивают оной, но интересно Ваше мнение!
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #5 : 22-11-2008 20:13 » 

Какая сейчас модна, я не знаю. Лет 10 наверно ассемблером не занимался в плотную. В свое время я учился по книге Питера Абеля "Ассемблер IBM PC". Сейчас ее уже наверно не найти.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
fromtheinside
Гость
« Ответ #6 : 22-11-2008 20:16 » 

Ясно. Как ни странно именно её нам дали в качестве основного учебника )) Но только в электронном виде.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines