Я изучал сборку и вчера нашел код для отрицания значения 160 бит (именно там я нашел его здесь ->https://courses.engr.illinois.edu/ece390/books/artofasm/CH09/CH09-5.html).Отрицание значения 160 бит
Это:
Value dword 0,0,0,0,0 ;160 bit integer.
.
.
.
mov eax, 0
sub eax, Value
mov Value, eax
mov eax, 0
sbb eax, Value+4
mov Value+8, ax
mov eax, 0
sbb eax, Value+8
mov Value+8, ax
mov eax, 0
sbb eax, Value+12
mov Value+12, ax
mov eax, 0
sbb eax, Value+16
mov Value+16, ax
Я не знаю, если я не достаточно хорош при сборке или этот код содержит некоторые ошибки. Посмотрите на 6-ой линии (считая от первого мов работы):
5. sbb eax, Value+4
6. mov Value+8, ax
В случае, если не шестой вид линии так:
mov Value+4, eax
Я не понимаю, почему мы мов используя только менее 16 бит eax для значения и почему он напрямую перемещается в Value + 8 вместо Value + 4.
Может ли это объяснить это?
Это ошибка. Ты прав. –
И в последующих строках: 'ax' должен быть' eax'. –