Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сложение двоичных чисел 
:(
    Опции темы
venlog
Дата 5.4.2006, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



Народ Помогите!!!!
надо писать курсовую работу по сложению, вычитанию, умножению и делению чисел с учетом, без учета; размером 1 байт, N-байт, а в ассемблере как в балете smile , короче лох, но пытался разобраться.............................не получилось smile
Есть такое:Сложение чисел размером 1 байт без учета знака

.data
summand_1db ? значения в summand_1и summand_2
summandj? db ? :нужно внести
sum_w label word
sum_b db 0
carry db 0
.code
add_unsign proc
mov al ,summand_2
add al ,summand_1mov sumji.al
jnc end_p :проверка на переполнение
adc carry,0
end_p: ret
add_unsign endp
...............................................................................................................................
пытался разобраться, но что то не получилось, при компиляции(если я проавильно выразился) выдает кучу ошибок, и что делать дальше не могу понять.
Тоже самое с:
Сложение чисел размером 1 байт без учета знака
Сложение чисел размером 1 байт с учетом знака
Сложение чисел размером N байт без учета знака
Сложение с учетом знака чисел размером N байт
Тоже самое и с вычитанием
...............................................................................................................................................
пожалуйста помогите!!!!!
PM MAIL   Вверх
sgi1981
Дата 5.4.2006, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 16.3.2006

Репутация: 2
Всего: 10





--------------------
Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства.
PM MAIL   Вверх
venlog
Дата 6.4.2006, 01:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



Это конечно очень познавательно, но немного не тоsmile
PM MAIL   Вверх
sgi1981
Дата 6.4.2006, 04:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 16.3.2006

Репутация: 2
Всего: 10



Цитата


add al ,summand_1mov sumji.al

Это что-то неправильное

Цитата

jnc end_p :проверка на переполнение
adc carry,0
end_p: ret


А что, не все ли равно что я бы написал так
smile
Цитата

;никакой проверки на переполнение
adc carry,0
end_p: ret

???

И я не сколько не боюсь, что мой вариант не будет работать, поскольку если нет переполнения - бит CF в регистре флагов процессора будет равен нулю.
А команда adc дополнительно складывает CF - значит сложение с нулем суммы не меняет smile smile smile :

Это сообщение отредактировал(а) sgi1981 - 6.4.2006, 04:28


--------------------
Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства.
PM MAIL   Вверх
venlog
Дата 6.4.2006, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



А можешь написать правильный код???
И по его анологии я попробую написать все остальные.
Мне надо что бы этот код компилировался, а код представленный выше, выдовал ошибки, если я правильно понял то уже прям с первой строки ему что то не нравилось. smile
PM MAIL   Вверх
sgi1981
Дата 6.4.2006, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 16.3.2006

Репутация: 2
Всего: 10



Сложение чисел размером в байт без учета знака
Код

.data
summand_1 db ?; значения в summand_1
summand_2 db ?; и summand_2 нужно внести
sum_w dw ?
sum_b db 0
.code
add_unsign proc
movzx ax, summand_1
movzx dx, summand_2
add ax, dx
mov sum_w, ax
mov sum_b, al
ret 
add_unsign endp


Сложение чисел размером в байт с учетом знака
Код

.data
summand_1 db ?; значения в summand_1
summand_2 db ?; и summand_2 нужно внести
sum_w dw ?
sum_b db 0
.code
add_sign proc
movsx ax, summand_1
movsx dx, summand_2
add ax, dx
mov sum_w, ax
mov sum_b, al
ret 
add_unsign endp


Что ещё ?



Это сообщение отредактировал(а) sgi1981 - 6.4.2006, 19:50


--------------------
Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства.
PM MAIL   Вверх
venlog
Дата 6.4.2006, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



Слушай!!!!!!!! огромное спасибо!!!!!!!!! за коды, я еще их не смотрел, но все равно спасибо, приятно что знающие люди помогаю, а не задерают нос типа "ЭЭЭЭЭ лох"
И еще небольшая просьба. smile
можешь расписать какая команда за что отвечает smile
заранее спасибо, ну а если нет так все равно спасибо!!!! smile smile
PM MAIL   Вверх
sgi1981
Дата 7.4.2006, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 16.3.2006

Репутация: 2
Всего: 10



Сложение чисел размером в байт без учета знака
Код

.data
summand_1 db ?; значения в summand_1
summand_2 db ?; и summand_2 нужно внести
sum_w dw ?
sum_b db 0
.code
add_unsign proc
movzx ax, summand_1;преобразует однобыйтный операнд в памяти в слово без учета знака
;все биты 8...15 заполняются нулями
movzx dx, summand_2;то же самое
add ax, dx; складывает полученные слова
mov sum_w, ax ;копирует двубайтный результат в ячейку памяти
mov sum_b, al; копирует младший байт результата в ячейку памяти
ret 
add_unsign endp


Сложение чисел размером в байт с учетом знака
Код

.data
summand_1 db ?; значения в summand_1
summand_2 db ?; и summand_2 нужно внести
sum_w dw ?
sum_b db 0
.code
add_unsign proc
movsx ax, summand_1;преобразует однобыйтный операнд в памяти в слово с учетом знака
;все биты 8...15 заполняются значением 7 бита
movsx dx, summand_2;то же самое
add ax, dx ;складывает полученные слова
mov sum_w, ax; копирует двубайтный результат в ячейку памяти
mov sum_b, al; копирует младший байт результата в ячейку памяти
ret 
add_unsign endp


Это сообщение отредактировал(а) sgi1981 - 12.4.2006, 18:18


--------------------
Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства.
PM MAIL   Вверх
venlog
Дата 7.4.2006, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



Огромное спасибо!!! smile
Как сдам курсовик обезательно отпишу и еще раз поблагадарю!!!
спасибо!!!
PM MAIL   Вверх
venlog
Дата 7.4.2006, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



при компиляции создался EXE-шный файл, при этом стокой ниже написал следующее
Link : warning L4021: no stack segment это нормально???
это нормально smile
PM MAIL   Вверх
Exekutor
Дата 8.4.2006, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 1.11.2005
Где: Казахстан. Костан ай

Репутация: нет
Всего: 4



если компилятор - tasm то попробуй так
Код

masm
model small
stack 256
.data
summand_1 db ?; значения в summand_1
summand_2 db ?; и summand_2 нужно внести
sum_w dw ?
sum_b db 0
.code
add_unsign proc
movzx ax, summand_1;преобразует однобыйтный операнд в памяти в слово с учетом знака
;все биты 8...15 заполняются значением 7 бита
movzx dx, summand_2;то же самое
add ax, dx ;складывает полученные слова
mov sum_w, ax; копирует двубайтный результат в ячейку памяти
mov sum_b, al; копирует младший байт результата в ячейку памяти
ret 
add_unsign endp



Это сообщение отредактировал(а) Exekutor - 8.4.2006, 13:02


--------------------
[color=blue][size=2]En taro addun, ma sol larinas[/size][/color]
PM MAIL   Вверх
venlog
Дата 12.4.2006, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



А то что коды совершенно одинаковы это так и должно быть???
Добавлено @ 10:00
А можно еще на вычетание тоже самое smile пожалуста!!! smile
PM MAIL   Вверх
Exekutor
Дата 12.4.2006, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 1.11.2005
Где: Казахстан. Костан ай

Репутация: нет
Всего: 4



может так?
Код

masm
model small
stack 256
.data
submand_1 db ?; значения в summand_1
submand_2 db ?; и summand_2 нужно внести
sub_w dw ?
sub_b db 0
.code
sub_unsign proc
movzx ax, submand_1;преобразует однобыйтный операнд в памяти в слово с учетом знака
;все биты 8...15 заполняются значением 7 бита
movzx dx, submand_2;то же самое
sub ax, dx ;вычитает полученные слова
mov sub_w, ax; копирует двубайтный результат в ячейку памяти
mov sub_b, al; копирует младший байт результата в ячейку памяти
ret 
add_unsign endp



--------------------
[color=blue][size=2]En taro addun, ma sol larinas[/size][/color]
PM MAIL   Вверх
sgi1981
Дата 12.4.2006, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 16.3.2006

Репутация: 2
Всего: 10



Цитата(Exekutor @ 12.4.2006, 13:08)
может так?
Код

;-*-*-*-*-*-*-*-*-*
movzx ax, submand_1;преобразует однобыйтный операнд в памяти в слово с учетом знака
;все биты 8...15 заполняются значением 7 бита
movzx dx, submand_2;то же самое
;-*-*-*-*-*-*-*-*-*

Да команда
Код

movzx ax, submand_1;

не преобразует операнд к большей размерности с учетом знака, а преобразует без учета знака.
Чтобы преобразование шло с учетом знака, нужна команда
Код

movsx ax, submand_1;




--------------------
Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства.
PM MAIL   Вверх
venlog
Дата 15.4.2006, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 5.4.2006

Репутация: нет
Всего: нет



Я все понял! вот тока еще бы на вычетание
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0908 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.