Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Ввод даных АСМ!Срочно!

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Прочее] >> Ввод даных АСМ!Срочно!
Имя
Сообщение << Старые топики   Новые топики >>
Ввод даных АСМ!Срочно! - 2008-12-19 22:17:24.610000   
xaxa89

Сообщений: 287
Оценки: 0
Присоединился: 2008-05-18 00:30:38.240000
Сразу к делу!Нужно сделать лабу на завтра, как говорится вся ночь в переди!=)
Само задание пока не важно да и там проблем не должно…пока… не возникало…
Смысл в том что нужно ввести массив целых чисел со знаком с клавиатуры. Препод сказал с помощбю прерывания int21. Сюда пишу само собой не для того что б за меня все сделали!
Немного разобрался… функция 0ah! Как с ней работать я разобрался, НО если скажем мне нужно ввести -123 то в памяти оно займет 4 байта, знак и цифры как символы по 1 байту…а мне получается нужно что оно все записывалось ну SWORD к примеру


З.Ы. Юзаю масм, Если важно задача:"Подсчитать кол-во отрицательных елементов на парных позициях масива из 10 елементов".


Обьясните как ввести эти гребаные цифры!!! ПЛИЗ


Кажется поднял панику раньше времени…=(

input_loop: mov ah,01h ; ввод символа int 21h cmp al,0dh ; если enter je chislo ; то занести число в массив cmp al,20h ; если пробел je chislo ; то занести число в массив sub al,30h ; вычитаем '0' mov cl,al ; сохраняем цифру в cl mov ax,dx ; в ax - введенное число mul c10 ; умножаем на 10 xor ch,ch add ax,cx ; добавляем цифру из al mov dx,ax ; число снова в dx jmp input_loop
=( всерано ничего не выходит!!!Блин люди скажите хоть в каком направлении искать!!!
Post #: 1
RE: Ввод даных АСМ!Срочно! - 2008-12-20 17:45:12.893333   
xaxa89

Сообщений: 287
Оценки: 0
Присоединился: 2008-05-18 00:30:38.240000
Вообщем сделал если кому интересно или еще чего…
;Подсчет колва отрицательных елементов на парных позициях CSEG segment org 100h _beg: COUNTER SBYTE ?&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; ;Наш счетчик MAS SBYTE 10 DUP(0)&nbsp;&nbsp;&nbsp; ;Оглашаем инициализированый масив, заполненый нулями mov bx,00h&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;обнуляем индексный регистр. mov cx,0ah&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;цикл 10 раз прогнать. mov COUNTER,00h CYCL: MOV ah,01h&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;читаем символ. INT 21h&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;прервались. CMP al,2Dh&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;проверяем не минус ли мы ввели. JZ minus &nbsp;&nbsp; sub al,30h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;конвертация в цифру. &nbsp;&nbsp; jmp finish&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;прыгаем дальше работать. minus: &nbsp;&nbsp; mov ah,01h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;нам нужно еще один прочитать если минус &nbsp;&nbsp; int 21h&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;прервались &nbsp;&nbsp; sub al,30h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;конвертация &nbsp;&nbsp; neg al&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;сделали отрицательным finish: &nbsp;&nbsp; mov MAS[bx],al&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; ;Записываем в масив введеное значение из регисра al &nbsp;&nbsp; add bx,1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;увеличиваем значение индексного регистра loop CYCL&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;лупаемся mov cx,05h&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;цикл 5 раз прогнать. mov COUNTER,0 mov bx,0&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;обнуляем индексный регистр. CYCL2: &nbsp;&nbsp; cmp MAS[bx],0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;сравниваем с нулем флажок SF(Флаг знака) поднят &nbsp;&nbsp; JS negat &nbsp;&nbsp; jmp fin2 &nbsp;&nbsp; negat: &nbsp;&nbsp; inc COUNTER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;увеличиваєм значение счетчика на 1 fin2: add bx,2 loop CYCL2&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;лупаемся mov ah,02h&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;подготовка и вызов функции 02h прерывания 21h mov dl,3Eh&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;для вывода символа с кодом 3Eh что обозначает "&gt;" int 21h&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;прервались=) add COUNTER,30h&nbsp;&nbsp;&nbsp; &nbsp; ;Преобразовуем число в строчное&nbsp; значение для вывода mov ah,02h&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;загружаем номер функции mov dl,COUNTER&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ;Значение символа для вывода int 21h&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;прервались=) MOV ah,4Ch&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;Bye-Bye INT 21h CSEG ends end _beg
Post #: 2
Страниц:  [1]
Все форумы >> [Прочее] >> Ввод даных АСМ!Срочно!







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.