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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.10.2011, 08:59   #1
Lunex.08
Форумчанин
 
Аватар для Lunex.08
 
Регистрация: 25.02.2009
Сообщений: 145
По умолчанию add, sub(fasm)

Здравствуйте.
В коде ошибка. Помогите найти ее(в коментах отмечен момент, где получается неверное значение):
Код:
;x = a+b-c+d    x = 11050 (0x2b2a)
use16
org 100h

  mov ax, word[a]
  mov bx, word[a+2]

  add ax, [b]  ;2CEC

  sub ax, [c]  ;2AF8
  add al, [d]  ;должно быть 2b2a, а получается 2a2a 

  mov ax, 4C00h
  int 21h

a dd 10000
b dw 1500
c dw 500
d db 50
Компьютеры бесподобны: за несколько минут они могут совершить такую грандиозную ошибку, какую не в состоянии сделать множество людей за многие месяцы.
Lunex.08 вне форума Ответить с цитированием
Старый 01.10.2011, 09:42   #2
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

ax а не al
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 01.10.2011, 09:44   #3
Lunex.08
Форумчанин
 
Аватар для Lunex.08
 
Регистрация: 25.02.2009
Сообщений: 145
По умолчанию

Цитата:
Сообщение от Goodwin98 Посмотреть сообщение
ax а не al
Тогда ошибка - разный размер операндов.
Компьютеры бесподобны: за несколько минут они могут совершить такую грандиозную ошибку, какую не в состоянии сделать множество людей за многие месяцы.
Lunex.08 вне форума Ответить с цитированием
Старый 01.10.2011, 10:05   #4
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

ну word [d] тогда
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 01.10.2011, 10:49   #5
x128
Форумчанин
 
Регистрация: 03.02.2010
Сообщений: 178
По умолчанию

не учитывается перенос, либо d должно быть словом и прибавлять к ax либо как сейчас и после сложения добавлять флаг переноса к ah т.е.
Код:
add  al, [d]
adc  ah, 0
x128 вне форума Ответить с цитированием
Старый 01.10.2011, 12:21   #6
Lunex.08
Форумчанин
 
Аватар для Lunex.08
 
Регистрация: 25.02.2009
Сообщений: 145
По умолчанию

Спасибо уважаемые форумчане! Все заработало. Я думал к старшей части 0 прибавлять не нужно. Ну да, точно, флаг переноса просто исчезал!
Компьютеры бесподобны: за несколько минут они могут совершить такую грандиозную ошибку, какую не в состоянии сделать множество людей за многие месяцы.
Lunex.08 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++ to C or Add DLL to C roman1991 Общие вопросы C/C++ 9 11.08.2011 18:55
Worksheets.Add() Skif-F Microsoft Office Excel 12 29.09.2010 10:04
Сложение(Add) Rymbil Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 22.01.2010 10:24
SQL.add Grom48 БД в Delphi 2 13.12.2009 16:42
add project lalilulelo Помощь студентам 3 26.05.2009 10:18