Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Пример


Автор: Оксана17 25.11.2010, 21:07
вот такой пример реализованный на ассемблере y = (c + 7∙b)/(a + d)
но выводит ошибки,подскажите пожалуйста,в чем ошибка

Код

.model small
.stack 100h
.data
;y=(с+7*b)/(a+d)
a db 2
b db 1
c db 3
d db 3
y dw 0
.code
Start:
mov ax, @data
Mov ds, ax
xor ax,ax
mov al,b
mul 7
add al,c
mov cl,a
add cl,b
div cl
mov y,ax
mov ah, 4ch
Int 21h
End start
end

Автор: 500mhz 25.11.2010, 23:23
ошибка чего? компиляции? при исполнении? какая ошибка


пс
Код

.model small
.stack 100h
.data
;y=(с+7*b)/(a+d)
a db 2
b db 1
c db 3
d db 3
y dw 0
.code
Start:
mov ax, @data
Mov ds, ax
xor ax,ax
mov al,[ds:b]
mul 7
add al,[ds:c]
mov cl,[ds:a]
add cl,[ds:b]
div cl
mov [ds:y],ax
mov ah, 4ch
Int 21h
End start
end





наверно так, хотя синтаксис от компилятора зависит

Автор: iff 25.11.2010, 23:30
В 16-ой строчке умножение на константу. вроде 86-ой проц. может умножать командой mul только на значение из регистра или памяти

Автор: vadimych 17.1.2011, 07:24
Вот в таком виде компилируется:
.model small
.stack 100h
.data
;y=(с+7*b)/(a+d)
a db 2
b db 1
cc db 3
d db 3
y dw 0
.code
Start:
mov ax, @data
Mov ds, ax
xor ax,ax
mov al,b
mov bl,7    ; 7 - в bl, можно было использовать переменную
mul bl
add al,cc
mov cl,a
add cl,d  ;здесь исправил  b  на d, но это не критично
div cl
mov y,ax
mov ah, 4ch
Int 21h
End start
Код



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)