У меня проблема с простой программой на ассемблере. Я не знаю, что и почему происходит, но есть проблема.Задача: Вычислить скалярное произведение двух массивов в ассемблере (эму 8086). Вот мой код
; multi-segment executable file template.
сегмент данных;добавьте свои данные здесь!n1 дБ 1,2,3 n2 дБ 4,5,6 i db?j db?
k dw ?
pkey db "press any key...$"
заканчивается
сегмент стека dw 128 dup (0) заканчивается
начало сегмента кода:;задать регистры сегментов: mov ax, data mov ds, ax mov es, ax
mov al,00h
mov ah,02h
mov ch,00h
mov cl,03h
mov bx,offset n1
ciklus:
mov dl,[bx]
;add dl,30h
mov j,0d
add j,dl
int 21h
mov al,j
mov ah,0h
inc bx
inc bx
inc bx
mov dl,[bx]
;add dl,30h
mov i,0d
add i,dl
mul i
mov k,ax
mov al,00h
mov ah,02h
int 21h
dec bx
dec bx
dec bx
inc bx
loop ciklus
lea dx, pkey
mov ah, 9
int 21h ; output string at ds:dx
; wait for any key....
mov ah, 1
int 21h
mov ax, 4c00h ; exit to operating system.
int 21h
end
end start;установите точку входа и остановите ассемблер.
Поэтому, когда я запускаю программу шаг за шагом, я вижу странные значения в оси.Я хочу, чтобы 1x4 2x5 3x6 => 4 10 18 сохранил в некоторой переменной и распечатал на экран.
Если кто-то может мне помочь, я буду благодарен.PS Я новичок в программировании на ассемблере, так что не сердись на мой глупый вопрос.