Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.06.2011, 15:06   #1
aleksandrln
Новичок
Джуниор
 
Регистрация: 09.12.2010
Сообщений: 2
По умолчанию Команды условной перадачи управления Вычислить выражение

| y–13 если –15 < x
z= | y+x+50 если –50 < x <= –15
| x*y+1 если x <= –50
x – int
y – char


Код:
.MODEL SMALL
INCLUDE MACRO1.LIB
.STACK 100H
.DATA
X DW 20
Y DW 5
z dw ?
N1 DW 7 DUP(?)
 num  DW 13,10, '$'
.CODE
begin: 
MOV BX,@DATA
MOV DS,BX

mov ax,x
cmp ax,-15
JA else1
else1:
mov ax,x
mov bx,y
sub bx,13
mov z,bx 
jmp con
cmp ax,-15
JBE else2
else2:
cmp ax,-50
JA else3
else3:
mov ax,x
mov bx,y
add bx,ax
add bx,50
mov z,bx
jmp con
cmp ax,-50
JBE else4
else4:
mov ax,x
mov bx,y
mul ax
add bx,1
mov z,bx
JBE con

CON: SUB AX,AX
MOV AX,z
NSTOC N1
@DISPSTR N1
@EXIT
END begin
Программа запускается но выдает неверный ответ.
Укажите пожалуйста на ошибки

Последний раз редактировалось Serge_Bliznykov; 17.06.2011 в 15:21.
aleksandrln вне форума Ответить с цитированием
Старый 17.06.2011, 15:19   #2
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

Попробуйте условия переходов ja,jbe заменить на jg,jle. Да и переходы в случае невыполнения условия надо добавить.
Код:
cmp ax,-15
JG else1
jmp else2
else1:
mov ax,x
mov bx,y
Так как-то.

Последний раз редактировалось vadimych; 17.06.2011 в 15:28.
vadimych вне форума Ответить с цитированием
Старый 21.06.2011, 17:16   #3
aleksandrln
Новичок
Джуниор
 
Регистрация: 09.12.2010
Сообщений: 2
По умолчанию

Код:
.MODEL SMALL
INCLUDE MACRO1.LIB
.STACK 100H
.DATA
X DW 20
Y DW 5
z dw ?
N1 DW 7 DUP(?)
 num  DW 13,10, '$'
.CODE
begin: 
MOV BX,@DATA
MOV DS,BX

mov ax,x
cmp ax,-15
JA else1
jmp else2
else1:
mov ax,x
mov bx,y
Sub bx,13
mov z,bx 
jmp con
else2:
cmp ax,-15
JBE else3
Jmp else5
else3:
cmp ax,-50
Jg else4
jmp else5
else4:
mov ax,x
mov bx,y
add bx,ax
add bx,50
mov z,bx
jmp con
else5:
cmp ax,-50
JlE else6
jmp con
else6:
mov ax,x
mov bx,y
mul ax
add bx,1
mov z,bx
JlE con

CON: SUB AX,AX
MOV AX,z
NSTOC N1
@DISPSTR N1
@EXIT
END begin
Заменил. Код доработал. Считает верно, только если условие соответствует –15 < x и –50 < x <= –15, если x <= –50, то неверно.
aleksandrln вне форума Ответить с цитированием
Старый 21.06.2011, 17:39   #4
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

При этом условии imul попробуйте применить вместо mul.
Код:
else6:
mov ax,x
mov bx,y
imul bx
inc ax
mov z,bx

Последний раз редактировалось vadimych; 21.06.2011 в 18:00.
vadimych вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить выражение: Nubaster Паскаль, Turbo Pascal, PascalABC.NET 3 31.05.2011 13:52
Вычислить выражение на TASM ky_kla Помощь студентам 1 10.05.2011 23:01
Команды передачи управления и циклы phlamey Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 08.06.2010 06:25
вычислить выражение Jereme Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 08.01.2010 16:21
Вычислить выражение ai\ekcah^p Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 04.12.2009 17:06