Сборка из сообщений сайта и Справки Bascom.

'====================================
‘ Формирование переменных с большей разрядностью
' ---------------------------------------------------------------
' Два байта в одну переменную WORD или INTEGER
' ---------------------------------------------------------------
'BYTE - 8 bit переменная
'WORD - 16 bit переменная
'INTEGER - 16 bit переменная

' ---------------------------------------------------------------
‘ Формирование переменной типа  WORD или INTEGER
'var = MAKEINT(LSB , MSB)
' LSB   - младший байт
' MSB - старший байт
' арифметика формирования - v = (256 * MSB) + LSB

‘ Получаем WORD
Dim a_Low As Byte
Dim a_High As Byte
Dim a As Word
a_Low = &B0000_0000    ' младший байт
a_High = &B1000_0000    ' старший байт
a = Makeint(a_Low, a_High)
'В переменной a - &B1000_0000_0000_0000
'                                 десятичное число 32768

‘ Получаем INTEGER
Dim a_Low As Byte
Dim a_High As Byte
Dim a As Integer
a_Low = &B0000_0000    ' младший байт
a_High = &B1000_0000    ' старший байт
a = Makeint(a_Low, a_High)
'В переменной a - &B1000_0000_0000_0000
'                                 десятичное число -32768 (!)
‘                                 старший бит переменной этого типа отвечает за знак числа

' ---------------------------------------------------------------
Dim a As Word
Dim a0 As Byte At a + 0 Overlay ' "+0" здесь и далее можно не вписывать
Dim a1 As Byte At a + 1 Overlay
a0 = &B0000_0000    ' младший байт
a1 = &B1000_0000    ' старший байт
'В переменной a - &B1000_0000_0000_0000
'                                 десятичное число 32768

' ---------------------------------------------------------------
' Две двухбайтных в одну четырехбайтную переменную
' ---------------------------------------------------------------
'WORD - 16 bit переменная
'DWORD - 32 bit переменная

Dim a As Dword
Dim a0 As Word At a + 0 Overlay
Dim a1 As Word At a + 2 Overlay
a0 = &B0000_0000_0000_0000 ' младшие 2 байта
a1 = &B0000_0000_0000_0001 ' старшие 2 байта
'В переменной a – &B0000_0000_0000_0001_0000_0000_0000_0000
‘                                   десятичное число 65536

' ---------------------------------------------------------------
' Четыре байта в одну четырехбайтную переменную
' ---------------------------------------------------------------
'BYTE - 8 bit переменная
'DWORD - 32 bit переменная
'LONG - 32 bit переменная

Dim a As Dword
Dim a0 As Byte At a + 0 Overlay
Dim a1 As Byte At a + 1 Overlay
Dim a2 As Byte At a + 2 Overlay
Dim a3 As Byte At a + 3 Overlay

a0 = &B0000_0000 ' младшие 2 байта
a1 = &B0000_0000
a2 = &B0000_0000 ' старшие 2 байта
a3 = &B0100_0000

'В переменной a – &B0100_0000_0000_0000_0000_0000_0000_0000
‘                                  десятичное число 1073741824

‘ В переменной типа LONG старший бит старшего байта отвечает за знак числа
‘ При a3 = &B1100_0000
' В переменной a – &B1100_0000_0000_0000_0000_0000_0000_0000
‘                                  десятичное число -1073741824 (!)

Отредактировано Nord (2019-07-18 22:42:30)