Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

процедуры assembler

51K
21 декабря 2011 года
Scoler
26 / / 08.01.2011
программа показывает неправильное значение y1,y2,y
Код вроде верно написан
y=y1+y2

y1=a+x, если x>a
y1=
y1=2*a-x,если x<=a

a*x,если x>10
y2=
x,если x<=10
Код:
model small
stack 256
.data
y dw ?
y1 dw ?
y2 dw ?
a dw 2
x dw 1
.code
main:
mov ax,@data
mov ds,ax
push a
push x
push y1
push y2
call w1
call w2
mov ax,[BP+6]
mov y1,ax
mov bx,[BP+8]
mov y2,bx
add ax,bx
mov y,ax
mov ax,4c00h
int 21h
w1 proc
mov BP,SP
mov ax,[BP+2] ;a
mov bx,[BP+4] ;x
cmp bx,ax
jBE M1                                                                                                                                                                                                                                                                                                                              
mov al,[BP+2]
mov cx,2
mul cx
sub al,[BP+4]
mov [BP+6],al
jmp M2
M1:
mov al,[BP+2]
add al,[BP+4]
mov [BP+6],al
ret
w1 endp
w2 proc
M2:
mov bp,sp
mov ax,[BP+4]
cmp ax,10
jBE M3
mov al,[BP+4]
mov [BP+8],al
M3:
mov al,[BP+2]
mul x
mov [BP+8],al
ret
w2 endp
end main
14
21 декабря 2011 года
Phodopus
3.3K / / 19.06.2008
а чего вы то al используете, то ax? и отдалите процедуры друг от друга и от остального кода, вынесите метки на 0-ю позицию строки
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог