21.08.2019, 09:06 [+3 UTC]
в нашей команде: 3 777 чел. | участники онлайн: 4 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.77 (31.05.2019)
JS-v.1.34 | CSS-v.3.35

Общие новости:
28.04.2019, 09:13

Форум:
16.08.2019, 05:33

Последний вопрос:
21.08.2019, 07:28
Всего: 150121

Последний ответ:
21.08.2019, 08:41
Всего: 258851

Последняя рассылка:
21.08.2019, 06:45

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
31.05.2013, 12:07 »
Александр Сергеевич
Спасибо!!! [вопрос № 187395, ответ № 272336]
29.03.2010, 15:48 »
Botsman
Большое спасибо за ответ. Отдельное - за оперативность smile [вопрос № 177541, ответ № 260443]

РАЗДЕЛ • Assembler

Создание программ на языке Assembler.

[администратор рассылки: Лысков Игорь Витальевич (Старший модератор)]

Лучшие эксперты в этом разделе

Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 94
Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 66
Kdsfofwe21
Статус: 2-й класс
Рейтинг: 1

Перейти к консультации №:
 

Консультация онлайн # 195683
Раздел: • Assembler
Автор вопроса: lordwarrior161 (Посетитель)
Отправлена: 21.05.2019, 16:42
Поступило ответов: 1

Здравствуйте! Прошу помощи в следующем вопросе:

[b]Исходные данные a,b,c,d – указываются произвольно. Вычислить


Получился такой код:

 org 100h
 mov al,[a] ; al=a
 mov cl,[c] ; cl=c
 mov bl,10  ; bl=10
 add al,bl  ; al=al+bl
 div cl     ; al=ax/cl
 mov [f],al
 loop 0102h

 ;---------------
 a db 1
 c db 1
 f db ?


В компиляторе ошибок нет, хотелось бы уточнить, что правильно/неправильно.

Последнее редактирование 21.05.2019, 18:52 Лысков Игорь Витальевич (Старший модератор)

Состояние: Консультация закрыта

Здравствуйте, lordwarrior161!
Правильный код будет, таким:

Код (Assembler) :: выделить код
org     100h
        xor     dl,dl;тут будет сумма
        mov     bl,[b];счетчик
@@01:   mov     al,[a];грузим А
        add     al,bl;добавляем счетчик
        div     [c];делим на С
        add     dl,al;суммируем
        dec     bl;уменьшаем счетчик
        jns     @@01

Удачи!


Консультировал: Зенченко Константин Николаевич (Старший модератор)
Дата отправки: 31.05.2019, 11:17

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 195683
lordwarrior161
Посетитель

ID: 403037

# 1

= общий = | 21.05.2019, 16:43 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

org 100h
естественно внутри кода, немного тег не туда поставил))

-----
Последнее редактирование 21.05.2019, 16:47 lordwarrior161 (Посетитель)

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 2

= общий = | 21.05.2019, 17:50 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Знак суммы это

это говорит, чтоу Вас должно суммироваться 0..10,т.е. 11-ть раз (a+b)/c

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

lordwarrior161
Посетитель

ID: 403037

# 3

= общий = | 21.05.2019, 17:57 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Зенченко Константин Николаевич
это говорит, чтоу Вас должно суммироваться 0..10,т.е. 11-ть раз (a+b)/c


Да, это я понимаю.

это же делает команда loop, правильно?

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 4

= общий = | 21.05.2019, 18:05 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

Формула такая у нас? А то значки, например, из Word-а после редактирования теряются...

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

lordwarrior161
Посетитель

ID: 403037

# 5

= общий = | 21.05.2019, 18:07 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Лысков Игорь Витальевич
Формула такая у нас?


Да. b от 0 до 10. Первую часть программы я сделал, она в точно такая же, как и пару консультаций назад. А вот как заставить эту команду выполниться определенное количество раз понять не могу

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 6

= общий = | 21.05.2019, 18:09 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161, Лысков Игорь Витальевич:


Не, там много веселея.
smile

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

-----
 Прикрепленный файл (кликните по картинке для увеличения):

lordwarrior161
Посетитель

ID: 403037

# 7

= общий = | 21.05.2019, 18:11 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Зенченко Константин Николаевич
Не, там много веселея.


да, именно так smile

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 8

= общий = | 21.05.2019, 18:12 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Ну оБшибся малость... smile

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 9

= общий = | 21.05.2019, 18:13 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

в смысле, именно так?
0 ≤ b ≥ 10
Тогда ждем разъяснений, как должно считать... smile
b ≥ 10 не смущает?

-----
Последнее редактирование 21.05.2019, 18:15 Лысков Игорь Витальевич (Старший модератор)

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 10

= общий = | 21.05.2019, 18:24 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

О команде loop:
Да, она используется для циклов, но она всегда использует регистр cx, как счетчик цикла
Цикл должен формироваться примерно так:

Код (Assembler) :: выделить код
mov cx, 11 ;количество итераций цикла
m: ;метка (любое имя, какое нравится) начала цикла
;...
;что-то делаем
;...
loop m ; cx=cx-1, и если cx не равен 0, то переход на метку m

-----
Последнее редактирование 21.05.2019, 18:24 Лысков Игорь Витальевич (Старший модератор)

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

lordwarrior161
Посетитель

ID: 403037

# 11

= общий = | 21.05.2019, 18:24 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Лысков Игорь Витальевич
в смысле, именно так?
0 ≤ b ≥ 10


да, просто символы почему-то в топике не отобразились.

В теории у меня используется команда loop

вот пример, пытаюсь делать по нему:

Решим задание: вычислить M=∑(a-b+d+c), где 0≤c≥10 с шагом 1

Прочитаем задание: вычислить промежуточные значений М = а-b+d+c. Таких М будет 10 штук, так как c изменяется в диаппазоне от 0 до 10.
Результатом вычисления будет сумма всех этих вычисленных М.

Пояснение:

1) диаппазон значений может изменяться от 0 до 10 или от 10 до 0 - без разницы

Фрагмент текста программы (без ввода и вывода значений с клавиатуры и на экран):

0100 mov M,0         ;M=0, обнуляем переменную М, там будет накапливаться сумма всех М
0101 mov bх,b        ;bх=b, помещаем в регистр bx содержимое переменной b
0102 mov cx,10      ;cx=c=10, помещаем в регистр cx конечное значение диапазона переменной с = 10
0103 mov dx,d        ;dx=d, помещаем в регистр dx содержимое переменной d
0104 mov aх,a        ;aх=a, помещаем в регистр ax содержимое переменной a
0105 sub ax,bx       ;ax=ax-dx, вычитаем из регистра ах содержие регистра bx и результат помещаем в регистр ах
0106 add ax,dx       ;ax=ax+dx, складываем содержимое регистра ах и регистра dx, результат помещаем в регистр ах
0107 add ax,cx       ;ax=ax+cx, складываем содержимое регистра ах и регистра сx, результат помещаем в регистр ах
0108 add M,ax       ;M=M+ax, складываем зачение М с предыдущим значением М и результат помещаем в переменную М
0109 loop 0104      ;переходим на строку 0104, при этом происходит:
                                 1) сравнение содержимого регистра сх с нулем. Если сх>0 то переход на указанный адрес.
                                 2) при переходе значение регистра сх автоматически уменьшается на 1. 
010А (какая-то следующая команда)

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 12

= общий = | 21.05.2019, 18:26 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

А может, все таки 0 ≤ b ≤ 10 ?

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 13

= общий = | 21.05.2019, 18:30 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

© Цитата: lordwarrior161
да, именно так

B>= 0 B>=10, заметьте из задания.
Вы скачали Зубкова?
Kоманда LOOP
© Цитата:
LABEL:
. . .
. . .
LOOP LABEL

Все, что многоточия, между LABEL: и LOOP LABEL - повторяется пока регистр СХ или ЕСХ не будет равен нулю.
Если
CX = 1
LOOP LABEL
цикл закончится
Если
CX = 0
LOOP LABEL
цикл повторится 65.535 раз
smile
У Вас по заданию меняется В, это значит,что в СХ нужно грузить В, а для а и с использовать другие регистры.

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

lordwarrior161
Посетитель

ID: 403037

# 14

= общий = | 21.05.2019, 18:30 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Лысков Игорь Витальевич
А может, все таки 0 ≤ b ≤ 10 ?


нет нет, именно
© Цитата: Лысков Игорь Витальевич
0 ≤ b ≥ 10

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 15

= общий = | 21.05.2019, 18:34 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

© Цитата: lordwarrior161
0 ≤ b ≥ 10

Верхнего ограничения нет, а это путь в никуда.

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

lordwarrior161
Посетитель

ID: 403037

# 16

= общий = | 21.05.2019, 18:36 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Зенченко Константин Николаевич
Верхнего ограничения нет, а это путь в никуда.


т.е. мой пример не имеет смысла?

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 17

 +1 
 
= общий = | 21.05.2019, 18:40 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

В Вашей методичке я вижу две ошибки и одну некорректность.
1) То, что написано 0 ≤ b ≥ 10 не означает, что написано правильно. Вы понимаете суть этой записи? b больше 0 и b больше 10. Это как?
Где тут изменение b от 0 до 10?
2) Предложенная реализация цикла отработает не от 10 до 0, а от 10 до 1, т.к. при cx = 0 loop не отправит на продолжение цикла
Некорректность в том, что писать абсолютные адреса в командах перехода, цикла как-то нехорошо., это допустимо только в листингах.
Вы же смотрите на листинг и тоже пишете число-адрес. Надо использовать метки, а не абсолютные числа.

К методичкам надо относиться критически...

-----
Последнее редактирование 21.05.2019, 18:40 Лысков Игорь Витальевич (Старший модератор)

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

lordwarrior161
Посетитель

ID: 403037

# 18

= общий = | 21.05.2019, 18:42 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Лысков Игорь Витальевич
Вы понимаете суть этой записи? b больше 0 и b больше 10. Это как?


Вот я тоже не понял этот момент

© Цитата: Лысков Игорь Витальевич
К методичкам надо относиться критически...


Поэтому к вам и пришел с этими вопросами smile

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 19

= общий = | 21.05.2019, 18:46 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: lordwarrior161
т.е. мой пример не имеет смысла?

Скорее всего в методичке "очяпятка".
Это Ваша методичка
© Цитата: lordwarrior161
0102 mov cx,10;cx=c=10, помещаем в регистр cx конечное значение диапазона переменной с=10

© Цитата: lordwarrior161
0109 loop 0104 ;Если сх>0 то переход на указанный адрес.

Смотрите у СХ есть, кончное значение, которое стремится к нулю.
Правильно?

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 20

= общий = | 21.05.2019, 18:49 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

И еще, пример из методички показывает, что переменные a, c - слова, а не байты.
Поэтому и в своей программе подправьте.
В данной программке лучше отказаться от loop smile
Лучше сделать так:

Код (Assembler) :: выделить код
mov cx, 10
m:
;...
dec cx
jge m ;если cx>=0, то идем на m

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 21

= общий = | 21.05.2019, 18:53 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

Ну-с, готовы написать правильный код? smile

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

lordwarrior161
Посетитель

ID: 403037

# 22

= общий = | 21.05.2019, 18:57 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Лысков Игорь Витальевич
И еще, пример из методички показывает, что переменные a, c - слова, а не байты.


тогда может в предыдущих моих консультациях я зря переменные брал в квадратные скобки [] smile , ибо нигде в примерах у меня их не было smile

© Цитата: Лысков Игорь Витальевич
Ну-с, готовы написать правильный код?


готов smile сейчас буду пробовать

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 23

= общий = | 21.05.2019, 19:02 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата:
тогда может в предыдущих моих консультациях я зря переменные брал в квадратные скобки [] , ибо нигде в примерах у меня их не было
Это зависит от используемого компилятора. В FASM-е брать в скобки надо!

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

lordwarrior161
Посетитель

ID: 403037

# 24

= общий = | 21.05.2019, 19:17 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: lordwarrior161
готов сейчас буду пробовать


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

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 25

= общий = | 21.05.2019, 19:19 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

Показуй smile

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

lordwarrior161
Посетитель

ID: 403037

# 26

= общий = | 21.05.2019, 19:24 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Лысков Игорь Витальевич
Показуй


ну допустим

org 100h
mov al,a ;al=a
mov bl,c ;bl=c
mov cx,10 ;cx=b=10


далее мне надо сложить a+b, т.е. al+cx (это как я понимаю) но на этом моменте компилятор вываливается с ошибкой. Все таки совсем я эту тему не понял smile

Ох уж этот ассемблер. Учу параллельно Swift от Apple, там такого безобразия нету smile понимаю, что язык высокого уровня, но все же

-----
Последнее редактирование 21.05.2019, 19:26 lordwarrior161 (Посетитель)

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 27

= общий = | 21.05.2019, 19:26 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

А как насчет моей рекомендации?

© Цитата:
И еще, пример из методички показывает, что переменные a, c - слова, а не байты. Поэтому и в своей программе подправьте.

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 28

= общий = | 21.05.2019, 19:28 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

Ну или остаться на байтах, тогда надо складывать не с cx, а с cl (это младший байт слова cx)

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 29

= общий = | 21.05.2019, 19:30 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

Код (Assembler) :: выделить код
       mov     ax,a
        mov     ax,[a]   

Компилятор делает,эти строки по разному:
1)адрес переменной а;
2)значение переменной а.
Вы можите сами это проверить.
smile

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 30

= общий = | 21.05.2019, 19:32 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

Так все, я отключаюсь от нашей милой беседы... smile
Оставляю Вас на попечение К.Н. smile

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

lordwarrior161
Посетитель

ID: 403037

# 31

= общий = | 21.05.2019, 19:40 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Зенченко Константин Николаевич:

вот как я понял

org 100h

 mov al,[a] ; al=a
 mov bl,[c] ; bl=c
 mov cl,10 ; cl=b=10
 add al,cl ; al=al+cl
 div bl ; al=ax/bl
 loop 0103h
 mov [f],al


 ;--------------------
 a db 1
 c db 1
 f db ?                          

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 32

= общий = | 21.05.2019, 19:40 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

© Цитата: lordwarrior161
Ох уж этот ассемблер. Учу параллельно Swift от Apple, там такого безобразия нету

Ну Вы сравнили, Swift это ЯВУ, и большую часть,там компилятор думает за кодера. Ассемблер - это язык CPU и тут кодер ДОЛЖЕН думать за CPU.
smile

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 33

= общий = | 21.05.2019, 19:53 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

Вот вариант проще, по пробуйте его скомпилировать и пройти по нему отладчиком.
Внимательно смотрите за регистрами из группы *Х.

Код (Assembler) :: выделить код
org 100h
;    mov al,[a] ; al=a
    mov bl,[c] ; bl=c
    xor dl,dl
    mov cl,3 ; cl=b=10
lab1:
    mov al,[a]
    add al,cl ; al=al+cl
    div bl ; al=ax/bl
    add dl,al
    loop lab1
 mov [f],al
 ;--------------------
 a db 1
 c db 1
 f db 3 

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

lordwarrior161
Посетитель

ID: 403037

# 34

= общий = | 21.05.2019, 19:58 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Зенченко Константин Николаевич
Вот вариант проще, по пробуйте его скомпилировать и пройти по нему отладчиком.


Все компилируется и работает smile , а все таки мой вариант имеет право на жизнь?

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 35

= общий = | 21.05.2019, 20:15 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Я с телефона :)
Не забывайте: использование loop
не даст отработать для b=cx=0

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 36

= общий = | 21.05.2019, 20:23 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

© Цитата: lordwarrior161
а все таки мой вариант имеет право на жизнь

Да но с оговорками.
Вы должны где то накапливать СУММУ, а этого Вы не делаете(у меня это регистр DL, add dl,al стоит сразу после диления). У Вас каждый раз считается (A+Bi)/C,но сама сумма нигде не сохраняется.
© Цитата: lordwarrior161
Все компилируется и работает

То,что он компилируется и работает я знаю, я предлогал Вамзарегистрами следить.

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 37

= общий = | 21.05.2019, 20:47 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Лысков Игорь Витальевич
Не забывайте: использование loop не даст отработать для b=cx=0

По условию у нас В>=0, а это значит, (А+0)/С должно быть посчитано в любом случае.
Используется целочисельное деление и остаток нигде не учитывается, при С=1 это не видно, но при любом другом, это будет заметно.

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 38

= общий = | 24.05.2019, 23:27 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

© Цитата: lordwarrior161
тогда может в предыдущих моих консультациях я зря переменные брал в квадратные скобки

У Вас методичка TASM | MASM, но Вы выбрали FASM.
Я Вам покажу различия, этих компилятоов: Это практически самое основное их различие.

Код TASM | MASM, на картинке он будет слева:
Код (Assembler) :: выделить код
model	tiny
.code
org	100h
beg:	
a	dw	9090h	
	mov	ax,a
	lea	ax,a
	mov	ax,offset a
	end	beg

Код FASM:
Код (Assembler) :: выделить код
org     100h
a       dw      9090h
mov     ax,[a]
mov     ax,a

Обратите внимание, во сколько длинее первый листинг. a dw 9090h, специально помещен по этому адресу, чтобы не было различий в командах, сам код 0x90 - команда NOP, все это расматривается одним отладчиком.

Что видно, TASM | MASM, предоставляет кучу возиожностей получения адреса и самого значения, но в отладчике эти записи, совсем не совпадают с тем, как понимает это сам отладчик. В FASM, что Вы написали, то и имеете в отладчике. Эти все условности, "тут играем, тут не играем, а тут мы рыбу заворачивали"(в сети должно быть выступление ещё советских комиков). Т.е. держать в голове(знать несколько ситнтаксисов, и пратически быстро учитывать эти особенности), для начинающего - опасно.
Ну, приведу ещё одну алегорию, Русский Язык: Вы пишете "кого", а читаете совсем не так- это TASM | MASM,.в FASM, что Вы написали, то и читаете.


Поздравляю Вы интуитивно выбрали FASM, и теперь Вам на "люминий" не нужно говорить "белый, легкий, твердый метал".
smile

-----
Последнее редактирование 24.05.2019, 23:32 Зенченко Константин Николаевич (Старший модератор)

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

lordwarrior161
Посетитель

ID: 403037

# 39

= общий = | 24.05.2019, 23:36 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Зенченко Константин Николаевич:

Спасибо большое за развёрнутый ответ smile , просто FASM было проще всего установить, поэтому его и использовал, но не знал, что между компиляторами есть такие различия.

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 40

= общий = | 24.05.2019, 23:53 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

я продлил, оба Ваших вопроса, но постараюсь дать ответ в ближайшие дни.
Уточните все таки DB или DW.
А, еще FASM, не создает промежуточных фалов и отладочной информации в файл не добавляет, с одной стороны - плюс: не нужно читиль специально диск, но сдругой стороны - минус: код на FASM, нельзя интегрировать в другие языки.
Если с установкой МАСМ есть проблемы, особенно старых версий, то с ТАСМ - тут качаете, распаковываете в нужную папку, правда работа только с командной строки, как и МАСМ.

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 41

= общий = | 24.05.2019, 23:54 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

© Цитата: lordwarrior161
не знал, что между компиляторами есть такие различия.

smile
Вы ещё NASM не видели.
smile

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

lordwarrior161
Посетитель

ID: 403037

# 42

= общий = | 25.05.2019, 00:07 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Зенченко Константин Николаевич
я продлил, оба Ваших вопроса, но постараюсь дать ответ в ближайшие дни.

Так вроде бы уже все вопросы решены smile

© Цитата: Зенченко Константин Николаевич
Уточните все таки DB или DW.


А это вы про что сейчас? smile

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 43

= общий = | 25.05.2019, 00:17 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
lordwarrior161:

8 или 16 -ть бит.

© Цитата: lordwarrior161
Так вроде бы уже все вопросы решены

Для Вас - да, есть ещё читатели:

На число посмотрите.
smile

-----
Последнее редактирование 25.05.2019, 00:20 Зенченко Константин Николаевич (Старший модератор)

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

lordwarrior161
Посетитель

ID: 403037

# 44

 +1 
 
= общий = | 25.05.2019, 00:21 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: Зенченко Константин Николаевич
8 или 16 -ть бит.


Ну все таки 8 бит

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.19260 сек.

© 2001-2019, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.77 от 31.05.2019
Версия JS: 1.34 | Версия CSS: 3.35