кто шарит в ассемблере?


гильдия Столичные Шахтеры (Гранд Элита)[424294] Рассвет Новой Эры (Герой Легенд) гильдия Королевские Лабоходы (Ученик)[278] Yakoot1 Информация
Назад к темам раздела.
2011-12-26 19:10:39 гильдия Столичные Шахтеры (Гранд Элита)[424294] Рассвет Новой Эры (Герой Легенд) гильдия Королевские Лабоходы (Ученик)[278] Yakoot1 Информация
нужно написать прогу, где пользователь вводит 2 шестнадцатиричных числа , а программа должна их сложить, вывести на экран результат, и установить четные биты этого числа

вознагражу)
 
2011-12-26 19:58:51 гильдия Мудрецы (Мастер)[10223] гильдия Бойцы (Грандмастер)[12824] Топ Клан (Магистр - Глава) БелДрагМеталл Информация
милиард)
 
2011-12-27 01:13:05 гильдия Мудрецы (Ученик)[352] гильдия Бойцы (Грандмастер)[19927] Вечный Информация
Yakoot1
аськостук
 
2011-12-27 01:43:44 гильдия Мудрецы (Мастер)[10223] гильдия Бойцы (Грандмастер)[12824] Топ Клан (Магистр - Глава) БелДрагМеталл Информация
Вечный
и что не лень вспоминать и разбирать код в нем?) я то знаю, но очееень дорого стоит)
 
2011-12-27 01:45:49 гильдия Столичные Шахтеры (Элита)[64262] yashchar Информация
Знатоки все тут на уровне одного семестра программирования

Разбирать код в задаче такого "масштаба" - это сутки, конечно, надо, не меньше
 
2011-12-27 01:47:05 гильдия Мудрецы (Мастер)[10223] гильдия Бойцы (Грандмастер)[12824] Топ Клан (Магистр - Глава) БелДрагМеталл Информация
yashchar
намного меньшеЮ идинственное там мануал прерываний смотреть)
а так TASM простой

Это не асемблер мотороловских микрокотроллеров)
 
2011-12-27 02:09:26 гильдия Столичные Шахтеры (Элита)[64262] yashchar Информация
БелДрагМеталл
Ты иронию не узрел в моих словах как я вижу?
 
2011-12-27 07:10:12 гильдия Мудрецы (Адепт)[1720] гильдия Бойцы (Ученик)[411] Vega (Рыцарь Ордена Павшей Звезды) jokermanx Информация
Yakoot1

Самому писать лень, собственно нашел в нете, вроде как должно работать
Прога читает два десятчных числа с клавы, слаживает, и выводит на экран.

/*Данная часть собственно просто декларация переменных, резервирования места под необходимые блоки данных, ее впринципе можеш заменить*/
.model small
.stack
.data
var1 db ?
.code
.startup

/* Собственно сам код, прокоментирую что делает каждая линия*/
mov ah,01h;готовимся к чтению от клавы
int 21h;читаем с клавы, получаем номер клавиши в таблице

sub al,30h;resto 30H (48Dec) от номера отнимаем позицию цифры 0
mov var1,al ;сохраняем номер var1

mov ah,01h ; снова готовимся к чтению
int 21h ; считываем второй номер
sub al,30h;resto 30H (48Dec)
add al,var1 ; realizo la suma de los dos valores

mov dl,al;pongo en dl el numero a imprimir
add dl,30h ; agrego 30 (48Dec) para obtener el caracter
mov ah,02h;funcion para imprimir un caracter en pantalla
int 21h

.exit
end


Ну меня тут напали, с утра закончу коментировать.

Для того чтоб складывать числа в 16й системе, нужно просто проверять или число меньше 10 или больше, и если больше то отнимать придется не позицию 0 а позицию буквы А
"и установить четные биты этого числа "
Этой части я вообще не понял.
 
2011-12-27 07:13:06 гильдия Мудрецы (Адепт)[1720] гильдия Бойцы (Ученик)[411] Vega (Рыцарь Ордена Павшей Звезды) jokermanx Информация
jokermanx писал(а):
Для того чтоб складывать числа в 16й системе, нужно просто проверять или число меньше 10 или больше, и если больше то отнимать придется не позицию 0 а позицию буквы А

Вспомнил, что А идет сразу после 9, так что можно сразу 16е номера считать.
 
2011-12-27 07:14:45 гильдия Мудрецы (Адепт)[1720] гильдия Бойцы (Ученик)[411] Vega (Рыцарь Ордена Павшей Звезды) jokermanx Информация
Чето меня голого долго убить не могут.
jokermanx писал(а):
"и установить четные биты этого числа "

Вот это если обьясниш, то утром допишу что еще можно делать.
 
2011-12-27 07:16:08 гильдия Мудрецы (Адепт)[1720] гильдия Бойцы (Ученик)[411] Vega (Рыцарь Ордена Павшей Звезды) jokermanx Информация
jokermanx писал(а):
Вспомнил, что А идет сразу после 9, так что можно сразу 16е номера считать.

Глянул таблицу ascii, не все таки а не идет после 9
 
2011-12-27 09:32:41 гильдия Столичные Шахтеры (Гранд Элита)[424294] Рассвет Новой Эры (Герой Легенд) гильдия Королевские Лабоходы (Ученик)[278] Yakoot1 Информация
а я не знаю чо там, подруга попросила, спрошу, если она сама не сделала еще)
 
2011-12-27 11:39:40 гильдия Мудрецы (Мастер)[10223] гильдия Бойцы (Грандмастер)[12824] Топ Клан (Магистр - Глава) БелДрагМеталл Информация
jokermanx
ну ему случайно не другие надо прерывания у него же 16 битное число)
 
2011-12-27 12:14:34 гильдия Мудрецы (Адепт)[1720] гильдия Бойцы (Ученик)[411] Vega (Рыцарь Ордена Павшей Звезды) jokermanx Информация
БелДрагМеталл
Yakoot1 писал(а):
вводит 2 шестнадцатиричных числа

Я так понял что это числа от 0 до F
Ну будут вводить либо 0-9
либо A-F
А значит, нужно будет проверить или то что ввели находится в этих интервалах, и если находится то произвести необходимые операции.
Когда узнает то что я не понимаю, попробую зделать полностью пример.
 
2011-12-27 12:50:21 гильдия Мудрецы (Мастер)[10223] гильдия Бойцы (Грандмастер)[12824] Топ Клан (Магистр - Глава) БелДрагМеталл Информация
тогда сразу ищи готовые пролцедура для считывания 10 числе с клавы)
 
2011-12-27 14:15:59 гильдия Столичные Шахтеры (Гранд Элита)[424294] Рассвет Новой Эры (Герой Легенд) гильдия Королевские Лабоходы (Ученик)[278] Yakoot1 Информация
jokermanx
там есть код
data segment para public 'data';
message1 db 0ah,0dh,'Vvedite first chislo $'
message2 db 0ah,0dh,'Vvedite second chislo $'
message3 db 0ah,0dh,'Vv first chislo: $'
message4 db 0ah,0dh,'Vv second chislo: $'

a db 0
b db 0
c db 0
data ends
stk segment stack
db 256 dup ('?');
stk ends
code segment para public 'code';
main proc;
assume cs:code, dsata, ss:stk
mov ax, data;
mov ds, ax;
mov ah, 9
mov dx, offset message1

int 21h;
xor ax,ax;
mov ah,1h;
int 21h;
mov dl,al;
sub dl,30h;
cmp dl,9h;
jle M1;
sub dl,7h;
M1: mov cl,4h;
shl dl,cl;
int 21h;
sub al,30h;
cmp al,9h;
jle M2 ;
sub al,7h;
M2: add dl,al;
mov a,dl;


mov dx, offset message2
mov ah, 9
int 21h;
xor ax,ax;
mov ah,1h;
int 21h;
mov dl,al;
sub dl,30h;
cmp dl,9h;
jle M3;
sub dl,7h;
M3: mov cl,4h;
shl dl,cl;
int 21h;
sub al,30h;
cmp al,9h;
jle M4 ;
sub al,7h;
M4: add dl,al;
mov b,dl;

xor ax,ax
mov al,a
add al,b
or al,01010101b
mov c,al

mov ah, 9
mov dx, offset message3
int 21h;
mov cx,16;
xor bx,bx;
mov bl,c;
M5: xor dx,dx;
sal bx,1;
adc dl,30h;
mov ah,02;
int 21h;
loop m5;

mov ax, 4c00h;
int 21h;
main endp;
code ends;
end main;

установка четных битов - установка единичек в четных позициях..
прога эта работает правильно, но там в начале 8 лишних знаков, надо либо их вообще убрать, либо в них тоже устанавливать четные биты
 
2011-12-27 14:46:11 гильдия Мудрецы (Мастер)[10223] гильдия Бойцы (Грандмастер)[12824] Топ Клан (Магистр - Глава) БелДрагМеталл Информация
sal bx,1; такую команду незнаю)
 
2011-12-28 08:00:04 гильдия Мудрецы (Адепт)[1720] гильдия Бойцы (Ученик)[411] Vega (Рыцарь Ордена Павшей Звезды) jokermanx Информация
БелДрагМеталл писал(а):
sal bx,1; такую команду незнаю)

Вроде как число в регистре б перемещается на один бит влево, не затрагивая знак, в данном случае на один бит, тоесть просто умножается на 2.

Просмотрел пример, ничего особо не понял, ребята коментируйте что делаете в каждой линии, ну или хотя бы длоками.
Yakoot1 писал(а):
прога эта работает правильно, но там в начале 8 лишних знаков, надо либо их вообще убрать, либо в них тоже устанавливать четные биты

80( на мя опять нап, позжее прокоментю
 
2011-12-28 10:20:15 гильдия Мудрецы (Мастер)[10223] гильдия Бойцы (Грандмастер)[12824] Топ Клан (Магистр - Глава) БелДрагМеталл Информация
Ну и конечно при раоботе с ассемблером единственный разумный подход это использовать имулятор, и просматривать результат каждой команды, а так асма это набор простых команд)
 
2011-12-28 14:47:39 гильдия Мудрецы (Адепт)[1720] гильдия Бойцы (Ученик)[411] Vega (Рыцарь Ордена Павшей Звезды) jokermanx Информация
БелДрагМеталл писал(а):

Ну и конечно при раоботе с ассемблером единственный разумный подход это использовать имулятор, и просматривать результат каждой команды, а так асма это набор простых команд)

Ну это при работе с асамблером, при каждой ошибке, система будет становится раком, поэтому нужно стараться просто коментировать код, и понимать что далеш