Добрый день! Почему у меня не хотят работать корректно цепные команды?
Я записываю адрес на node 1 в si, потом меняю флажок df на 0, чтобы движение шло вперед по байту, через lodsb загружаю байт в al из si и хочу записать его в namex в структуре, но оно не записывается. Сама запись реализована правильно, я пробовал записывать в namex номер итерации цикла от 0 до 1 и все нормально записалось. Но с цепными проблема...
Code2 SEGMENT use16
ASSUME cs:Code2, ds:Data1, es:Data2
mov ax,Data1
mov ds,ax ; запис адреси data1 в ds
mov ax,Data2
mov es,ax ; запис адреси data2 в ds
mov I_struc, 0 ;обнуляємо індекс структури
lea si, node1 ; <---
cld ; <---
@cycle_struc2:
cmp I_struc, 6 ;перевірка ітерації циклу
jae @finish_cycle_struc2 ;якщо >= 6 то закінчити цикл
movzx bp, I_struc ;записуєм індекс структури
imul bp, size Node ;множимо на розмір структури
mov I_namex, 0 ;обнуляємо індекс поля адреси
@cycle_namex:
cmp I_namex, 5 ;перевірка ітерації вкладеного циклу
jae @finish_cycle_namex ;якщо >= 5 то закінчити цикл
lea bx, A1[bp] ;записуєм адресу поточної структури
movzx di, I_namex ;записуєм індекс поля
lodsb ; <---
mov BYTE PTR A1[bx].namex[di],al ;записуєм в імені ім'я структури
inc I_namex ;+1 до ітерації
jmp @cycle_namex
@finish_cycle_namex:
inc I_struc ;+1 до ітерації
add si, 5
jmp @cycle_struc2
@finish_cycle_struc2:
Code2 ENDS
Вот логические сегменти
Node STRUC
namex db 5 dup(?)
field1 dw 5 dup(?)
Node ENDS
Data1 SEGMENT
I_struc db ?
I_namex db ?
A1 Node 6 dup(<>)
Data1 ENDS
Data2 SEGMENT
node1 DB 'node1'
node2 DB 'node2'
node3 DB 'node3'
node4 DB 'node4'
node5 DB 'node5'
node6 DB 'node6'
Data2 ENDS