Size: a a a

Ассемблер

2020 December 23

D

Den in Ассемблер
Dima Richev
Понял
Вот посмотри, такой пример, это я для себя писал
----------------двоичная система
8 бит адресует от 0 до  255 единиц, всего 256 значений (при всех выставленных в единицу битах 9-й бит это 511, 10-й 1023 и так далее, 2 в степени разряда):

|    0  |  0|  0|  0 |0|0|0|0|
|128 |64|32|16|8|4|2|1| - 8 бит адресации как в 1-м октаидре ip4 адреса
чтобы записать адрес например 163, прибавляем от старших битов к младшим выбирая подходящие биты:
128+32+2+1 итого мы выбрали 1,3,7,8 биты. Выставляем их в единицы:
|1|0|1|0|0|0|1|1| ---------------- итак 10100011=163
исходя из алгоритма таблицы:
0=0000000[0]
1=0000000[1]
2=000000[10]
3=000000[11]
4=00000[100]...
128=[1]0000000
129=[1]000000[1]
255=[11111111]

получаем двоичную маску методом _AND_ (_И_ оба одинаковых либо ноль)
192.136.24.128/28
255.255.255.(255-(1+2+4+8))=240
11000000.10001000.00011000.10000000
11111111.11111111.11111111.11110000
------------------------------------------------------------------
11000000.10001000.00011000.10000000
источник

DR

Dima Richev in Ассемблер
Да я знаю это, просто запутался
источник

D

Den in Ассемблер
Dima Richev
Да я знаю это, просто запутался
ну так мало ли, я тоже путался а там все просто когда присмотришься
источник

s

s54816 in Ассемблер
Eugene Krasnikov (ᴊɪɴ x)
И соответственно, если у меня макрос меняет какую-то константу, допустим:

macro set n
{
 a equ n*2;
}

x = 1

if x = 1
 set 5
else if x = 2
 set 3
else
 set 0
end if

mov ax,a

То что запишется в ax?
10? Хер там, ноль! Потому что код превратится в следующий:

x = 1

if x = 1
 a equ 10
else if x = 2
 a equ 6
else
 a equ 0
end if

mov ax,a

Т.е. макросы раскроются ДО обработки if'ов.
А что буде дальше?

Дальше будет так:

  a equ 10
 a equ 6
 a equ 0

x = 1

if x = 1
else if x = 2
else
end if

mov ax,a

Потому что equ обрабатывается раньше if'ов и кода.
Ну и в итоге

mov ax,a, т.е. 0.

И вот это надо всё учитывать при разработке макросов.
Вместо if использовать match, который может только строгое соответствие принять, нельзя проверить, что x <> 5 или x > 5, только x = 5, например. И то если 5 задано числом, а не x = 2+3.
Иногда можно извращаться с rept, он умеет арифметику немного.
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
s54816
Иногда можно извращаться с rept, он умеет арифметику немного.
Ну если только так, но это бред. Проверять чиса через rept.
источник

DB

Dima Bat in Ассемблер
это сдвиг единицы и сложение? как на число PB7 и т.д?
источник

A

Aleksandr in Ассемблер
это загрузка в r16 значения, полученного при помощи ряда ИЛИ и сдвигов единицы на константы
источник

АМ

Алексей Маринченко... in Ассемблер
Ребят, какие дебаггеры и дизассемблеры лучше всего для DOS 🤔
А если дадите ссылочку так вообще спасибо 😉
источник

АМ

Алексей Маринченко... in Ассемблер
Алексей Маринченко
Ребят, какие дебаггеры и дизассемблеры лучше всего для DOS 🤔
А если дадите ссылочку так вообще спасибо 😉
Хотя бы название
источник

ST

Saenro T in Ассемблер
источник

ST

Saenro T in Ассемблер
источник

ST

Saenro T in Ассемблер
источник

ST

Saenro T in Ассемблер
источник

ST

Saenro T in Ассемблер
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
А зачем это? Если есть fasm, nasm?
источник

ST

Saenro T in Ассемблер
У меня тот же вопрос) есть же cpl32)
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Saenro T
У меня тот же вопрос) есть же cpl32)
Одно издание 97 года, другое - 2020.
Ну если только DPMI-сервис запускать очень на хочется...
источник

EK

Eugene Krasnikov (ᴊɪ... in Ассемблер
Там синтаксис какой вообще?
TASM - MASM или как?
источник

АМ

Алексей Маринченко... in Ассемблер
Когда я пишу push/pop ah возникает ошибка. Почему?
Argument to operation or instruction has illegal size
источник

ST

Saenro T in Ассемблер
Eugene Krasnikov (ᴊɪɴ x)
Там синтаксис какой вообще?
TASM - MASM или как?
Синтаксис pure assembly
источник