и у тебя нет сложения с нулём
как нету ?
mov si,0
mov ax,0
mov cx,7
ASCII1: add al,V1[si]
shl al,1
inc si
loop ASCII1
add al,V1[si]
mov v2,ax
а это что ? складывается al=0 с первым элементом из масcива V1 результат записсывается в al далее
умножаем на 2 после прибавляем после увеличиваем индекс
и теперь происходит сложение 1*2+второй элемент массива
т.к заканчиваем на умножении ещё одно сложение вынес из цикла
что бы закончилось им
Добавлено через 1 час, 31 минуту и 1 секунду:вопрос вот в чём
этот код работает полностью:
model small
.data
V1 db 01b,01b,01b,01b,01b,01b,01b,01b
V2 db 1 DUP(?)
.code
mov ax,@data
mov ds,ax
mov si,0
mov ax,0
mov cx,7
ASCII1: add al,V1[si]
shl al,1
inc si
loop ASCII1
add al,V1[si]
mov v2,al
mov ax,4c00h
int 21h
end
а это работает но не правильно после первого прохода цикла
и выполнение команды add ax,V1[si] второй раз т.е должно сложится 02+01 результат получается
0102 а не 03 пот этого я не могу понять
model small
.data
V1 dw 01b,01b,01b,01b,01b,01b,01b,01b
V2 dw 1 DUP(?)
.code
mov ax,@data
mov ds,ax
mov si,0
mov ax,0
mov cx,7
ASCII1: add ax,V1[si]
shl ax,1
inc si
loop ASCII1
add ax,V1[si]
mov v2,ax
mov ax,4c00h
int 21h
end
Добавлено через 31 минуту и 2 секунды:В общем всё добавил ещё один inc si
и всё заработало как над =)