Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
1 / 1 / 1
Регистрация: 28.11.2020
Сообщений: 93
1

Объясните разницу между DX и BX в программе

11.09.2021, 14:43. Показов 1705. Ответов 4
Метки fasm (Все метки)

Author24 — интернет-сервис помощи студентам
Assembler
1
2
3
4
5
6
7
8
9
use16
org 100h
    mov dx, hello ; <===| вот тут
    mov ah, 9
    int 21h
 
    mov ax, 4C00h
    int 21h
hello db 'Hello, world!$'
Если меняю dx на bx, то вместо "hello,world" получаю кучу мусора. Объясните, они же вроде как оба могут хранить данные, тогда в чем разница?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.09.2021, 14:43
Ответы с готовыми решениями:

Объясните разницу между....
Привет АLL!!! Сабж. Чем они отличаются???? Set oradynaset =...

Объясните разницу между C# и C++
Часто встречаю на форуме, что мол C++ мощнее C#. Можно услышать ответ проффесионала, в чем...

Объясните разницу между параметрами SMART
«04 (04) Start/Stop Count - Полное число циклов запуск-остановка шпинделя. У дисков некоторых...

Объясните разницу между указателем и ссылкой
Подскажите пожалуйста, в чем разница между этими двумя строками? Distance dist = *(new Distance);...

Объясните разницу между alias и host(a)
Добрый вечер, коллеги! У меня на сервере IIS существует два веб-приложения. И нужно на каждое из...

4
Прощай, Мир!
1672 / 830 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
11.09.2021, 15:19 2
просто нужно использовать заранее предопределенные функциями регистры,
в данном случае именно регистр dx для адресации выводимой строки..
0
1 / 1 / 1
Регистрация: 28.11.2020
Сообщений: 93
11.09.2021, 15:44  [ТС] 3
Нигде при описании регистров не видел, чтобы так это расписывали, можете подробнее объяснить, что значит "в данном случае"?
0
3406 / 1825 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
11.09.2021, 17:12 4
Лучший ответ Сообщение было отмечено politoto как решение

Решение

Вам сказали:
Цитата Сообщение от proc3nt Посмотреть сообщение
просто нужно использовать заранее предопределенные функциями регистры
А Вы:
Цитата Сообщение от Avgust Pier Посмотреть сообщение
Нигде при описании регистров не видел
Ну так посмотрите:
DOS 1+ - WRITE STRING TO STANDARD OUTPUT
AH = 09h
DS : DX -> '$'-terminated string
Return:
AL = 24h (the '$' terminating the string, despite official docs which state that nothing is returned) (at least DOS 2.1-7.0 and NWDOS)

Notes: ^C/^Break are checked, and INT 23 is called if either pressed. Standard output is always the screen under DOS 1.x, but may be redirected under DOS 2+. Under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
2
Автор канал по Лиспу
24 / 22 / 2
Регистрация: 10.08.2021
Сообщений: 357
17.09.2021, 11:01 5
Avgust Pier, Дело в том, что когда программа доходит до команды int процессор вызывает прерывание, эдакую подпрограмму определяемую ОС. Как раз эти прерывания получают свои параметры через регистры. И за каждым регистром закреплена своя роль. Она определяется операционной системой и вызываемым прерыванием. Всё это можно посмотреть в документации к ОС.

Полагаю, рассматриваемые вами описания регистров касаются больше их параметров в архитектуре процессора, таких как разрядность например. В рассмотренном нами случае, нужно понимать, что о регистрах думает ОС.

Когда вы положили hello в bx содержимое dx осталось неизменным, там был какое-то значение. При вызове прерывание считало это значение и восприняло его как адрес, по которому лежит строка. Вот оно и считало то, что лежало в ячейке с этим адресом. На bx прерывание наверное даже не посмотрело (хотя я не знаю, может и у этого регистра своя роль в этом прерывании имеется).

Так же есть термин системные вызовы, но я не достаточно компетентен, чтобы ответить, одно ли они и тоже, что и прерывания. Мне они казались сходными понятиями.
0
17.09.2021, 11:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.09.2021, 11:01
Помогаю со студенческими работами здесь

Объясните разницу между twisted и celery
Добрый день! Друзья, если возможно, объясните, пожалуйста, разницу между этими двумя фреймворками....

Объясните разницу между двумя #define
Объясните пожалуйста, в чем разница между 2 строчками ниже. В каких случаях они отличаются, в...

Объясните разницу между входными и выходными параметрами
Здравствуйте, объясните мне пожалуйста разницу между входными и выходными параметрами в хранимых...

Объясните разницу между Parse, TryParse, Convert.
Здраствуйте. Обьясните пожалуйста доступным языком разницу между Parse, TryParse, Convert. ...

Объясните разницу между алгоритмом Флойда и Данцига
Объясните разницу между алгоритмом Флойда и Данцига P.S. знаю,что в порядке действий, а где именно?


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru