|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.08.2018, 14:56 | #11 |
Новичок
Джуниор
Регистрация: 14.08.2018
Сообщений: 62
|
|
14.08.2018, 15:01 | #12 | ||
Старожил
Регистрация: 15.02.2010
Сообщений: 15,708
|
Цитата:
Код:
Код:
Цитата:
|
||
14.08.2018, 15:19 | #13 |
Новичок
Джуниор
Регистрация: 14.08.2018
Сообщений: 62
|
а то что использовали? куда девается то? или оно уже отработало и не работает?
|
14.08.2018, 15:22 | #14 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,708
|
Что так? Вот вы взяли в руки молоток и забили гвоздь, потом взяли топор и стали рубить дерево... как у вас в руках сложились молоток и топор?
|
14.08.2018, 15:33 | #15 | |
Новичок
Джуниор
Регистрация: 14.08.2018
Сообщений: 62
|
Цитата:
mov dx,offset My_string mov ax,10h mov ds,ax mov ah,9 int 21h ... My_string db 'Hello!$' ... |
|
14.08.2018, 15:33 | #16 |
Новичок
Джуниор
Регистрация: 14.08.2018
Сообщений: 62
|
Давайте вспомним, что функция 09h прерывания 21h выводит строку, адрес ко-торой задается в регистрах dsx. На рис. 4.1 отображено состояние программы, при котором мы умышленно загружаем в ds число 10. Обратите внимание, что в окне Memory1 отображены данные, расположенные в памяти по адресу 0A09:010Ch,а именно строка Hello!, которую должна вывести программа. Это и есть полный адрес выводимой строки, включающий в себя сегмент и смещение. Однако про-грамма перед вызовом прерывания 21h загружает в ds число 10. Следовательно, операционная система начнет выводить символы, находящиеся по адресу dsx — 0010:010Ch, что является логической ошибкой в программе.
|
14.08.2018, 15:34 | #17 |
Новичок
Джуниор
Регистрация: 14.08.2018
Сообщений: 62
|
Если все же возникает необходимость в выводе строки, расположенной не в том сегменте, в который загружена сама программа, а в другом (такое требуется часто), то после выполнения всех необходимых операций следует восстановить сегмент-ный регистр данных ds:
... mov ax,cs mov ds,ax ... |
14.08.2018, 15:35 | #18 |
Новичок
Джуниор
Регистрация: 14.08.2018
Сообщений: 62
|
этот пример показывает с другим правда регистром что сегментный регистр ds нужно востановить же
|
14.08.2018, 15:38 | #19 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,708
|
Зачем вы тут цитируете древний учебник?
Цитата:
Ну да, если вы сначала записали САМИ неправильное значение 10, то, естественно, надо записать правильное значение, чтобы строка вывелась. |
|
14.08.2018, 15:45 | #20 | |
Новичок
Джуниор
Регистрация: 14.08.2018
Сообщений: 62
|
Цитата:
хороший учебник Калашникова для новичков |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Assembler, команда MOV | OmegaBerkut | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 10 | 27.09.2015 20:44 |
PDP 11 - команда пересылки mov 27 27. почему это фатальная ошибка? | 13xXx13 | Помощь студентам | 0 | 15.01.2012 23:34 |
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) | Albert2008 | Общие вопросы Delphi | 4 | 21.08.2008 15:33 |
команда MOV, проблемы | fermat_c | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 18.04.2008 19:19 |
У меня вопрос про базы данных,а точнее про таблицы!!! | Alexij | Общие вопросы Delphi | 1 | 13.04.2008 23:24 |