Size: a a a

Ассемблер

2020 August 31

RS

Rusty Shackleford in Ассемблер
Loren White
utf 16 же
utf16 это не юникод ? просто утф 8 это в бит на символ получается, тоесть будет без нулей между, а utf16 это 16 бит на символ отсюда и ноль между символами, верное ?
источник

RS

Rusty Shackleford in Ассемблер
s54816
Нет. Если по поводу du ещё можно поспорить, то dw точно не макрос, и есть везде.
du точно макрос ) вчера гуглил, в фасм
источник

LW

Loren White in Ассемблер
юникод, просто ты побайтово определяешь
источник

LW

Loren White in Ассемблер
вот и ноли
источник

RS

Rusty Shackleford in Ассемблер
ну да, ну и нуля от того что 16 как раз, тоесть 16 бит максимум на символ, но для моих достаточно 8, по этому 8 свободные остаются
источник

RS

Rusty Shackleford in Ассемблер
верно ?
источник

LW

Loren White in Ассемблер
00 52 - это кодировка символа
источник

LW

Loren White in Ассемблер
они не свободные, просто такой номер
источник

s

s54816 in Ассемблер
Rusty Shackleford
du точно макрос ) вчера гуглил, в фасм
Нет, он по умолчанию не макрос, фасм сам преобразует du 'строка' в последовательность dw. Но вот если ты хочешь выбирать кодировку исходной строки, тогда есть набор макросов с тем же именем для разных кодировок.
источник

LW

Loren White in Ассемблер
источник

RS

Rusty Shackleford in Ассемблер
s54816
Нет, он по умолчанию не макрос, фасм сам преобразует du 'строка' в последовательность dw. Но вот если ты хочешь выбирать кодировку исходной строки, тогда есть набор макросов с тем же именем для разных кодировок.
macro du      [args]
{
 common local ..count,..current,..byte,..wide,..match,..step,..eof
 ..match = 0
 ..step  = 0
 virtual at 0
   db args
   ..count = $
 end virtual
  ..current = 0
 repeat ..count
   if ..current<..count
    virtual at 0
    db args
    load ..byte byte from ..current
    if ..byte=0FEh
     ..eof      = 1
     ..match    = 1
     ..step     = 1
     ..current = ..current+1
     load ..byte byte from ..current
     ..wide    = ..byte
     ..current = ..current+1
     load ..byte byte from ..current
     ..wide = ..wide + (..byte SHL 8)
    else if ..byte=0FFh
     ..eof   = 0
     ..match    = 0
     ..step     = 0
    else if ..step=1
     ..wide    = ..byte
     ..current = ..current+1
     load ..byte byte from ..current
     ..wide = ..wide + (..byte SHL 8)
    else
     ..eof     = 1
     ..wide = ..byte
    end if
    ..current = ..current+1
    end virtual
    if  ..eof=1
            dw ..wide
    end if
   end if
 end repeat
 if ..match<>0
     display "Error! The unicode string [",args,"] can't match!",0DH,0AH
 end if
}
источник

s

s54816 in Ассемблер
Rusty Shackleford
macro du      [args]
{
 common local ..count,..current,..byte,..wide,..match,..step,..eof
 ..match = 0
 ..step  = 0
 virtual at 0
   db args
   ..count = $
 end virtual
  ..current = 0
 repeat ..count
   if ..current<..count
    virtual at 0
    db args
    load ..byte byte from ..current
    if ..byte=0FEh
     ..eof      = 1
     ..match    = 1
     ..step     = 1
     ..current = ..current+1
     load ..byte byte from ..current
     ..wide    = ..byte
     ..current = ..current+1
     load ..byte byte from ..current
     ..wide = ..wide + (..byte SHL 8)
    else if ..byte=0FFh
     ..eof   = 0
     ..match    = 0
     ..step     = 0
    else if ..step=1
     ..wide    = ..byte
     ..current = ..current+1
     load ..byte byte from ..current
     ..wide = ..wide + (..byte SHL 8)
    else
     ..eof     = 1
     ..wide = ..byte
    end if
    ..current = ..current+1
    end virtual
    if  ..eof=1
            dw ..wide
    end if
   end if
 end repeat
 if ..match<>0
     display "Error! The unicode string [",args,"] can't match!",0DH,0AH
 end if
}
Да. Макрос перекрывает встроенную директиву du. Но тебя никто не заставляет подключать encoding/whatever.inc. Не подключишь — не перекроет, для ASCII оно будет правильно работать, а для русских букв — уже нет.
источник

RS

Rusty Shackleford in Ассемблер
забавно, буду знать ) я думал это изначально макрос
источник
2020 September 01

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
Rusty Shackleford
str db 0x74, 0, 0x68, 0, 0, 0
три нуля ?
если по байтно пишешь widechar то учитывай расположение байт, младший байт по младшим адресам, старший - по старшим. взять для примера символ 0074h. 74 - это младший байт, его надо определить первым, потом 1 старший нуль (74h, 00h). дальше символ 0068h, ставим сначало младший байт по младшим адресам, потом старший (68h,00h), ну а потом сам ноль, 0h, 0h. вот и получается что в ьайтовом представлении у тя 3 подряд идущих ноля
источник

a

asm in Ассемблер
Добро пожаловать, Ilya Lukyanov
источник

🦊

🦊 in Ассемблер
Saenro T
А такой ни у кого нет? Интересно, что там внутри...
источник

S

Solo RT in Ассемблер
Saenro T
А такой ни у кого нет? Интересно, что там внутри...
источник

S

Solo RT in Ассемблер
vyglyadit krasivo
источник

D

Dim in Ассемблер
я бы даже сказал: всрато
источник

С

Сергей in Ассемблер
1 сентября отмечать надо. По поверьям в этот день каждый взрослый должен выучить любую главу из учебника шестого класса.
В общем это капец как тяжело на работе
источник