Поиск:

Ответ в темуСоздание новой темы Создание опроса
> народ, помогите плиз с лабой 
:(
    Опции темы
St_Rider
Дата 24.1.2005, 18:57 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











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

в общем, лаба не сложная, надо из матрицы удалить все строки, у которых среднее арифметическое (в смысле сумма всех элементов деленная на кол-во элементов) наименьшее.
без стека, без ввода-вывода

пожалуйста, помогите!!!!
очень на вас надеюсь!!!

для контактов icq 219331421
  Вверх
Akina
Дата 24.1.2005, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Пиши текст, задавай вопросы. Ошибки поправим, в непонятках проконсультируем.

Или топай в раздел "работа".


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Bro058
Дата 1.12.2010, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Товарищи форумчане про шу вашей помощи и консультации. Весь курсач сам сделал(ну канешно сделал его по-дилетантски), но всё же сам.
Споткнулся на финальном моенте. 
Конкретнее:
 вылетает сообщение о делении на 0, хотя я не вижу деления на 0 (мож плохо смотрю)
вот сам код, проблема на этапе получения и вывода "кода разности" на экран, то есть если символ имеет ASCII-код 100, то мне надо вывести на экран цифру 255 - 100 = 155!!!! т.е. 155 на экран.
так вот тут я споткнулся и ничё дальше не идёт, а что самое обидное просто получение ASCII кода и вывод его на экран я прописал и он работает, а тут вот не получаеться никак(((
(если кто попробует помочь, при запуске введите 5-6 символов подряд и последним обязательно 'h')
код:
Код

stseg   segment para    stack
        dw      16      dup(?)
stseg   ends
dseg    segment para
 
path_and_name    DB             'C:\Tasm\Kursoff.txt',0
handle_of_file   DW             0
number           DB             18
read             DW             0
message1         DB             'Press any key to exit!$'
message2         DB             'Output text on print: $'
message3         DB             'Input text: $'
help_variable                DB   '000 $'     
Buffer           DB         30  DUP(0) 
help_param       DB             (?)
date             db        'Today is: 00.00.0000$'
month            db               (?)
day              db               (?)
year             dW               (?)
y                db                (?)
dseg    ends
cseg    segment para
lab1    proc    far
        assume  cs:cseg,ds:dseg,ss:stseg
        push    ds
        mov     ax,0            ; обнулить регистр АХ   
        push    ax              ; поместить в стек смещение адреса возврата=0
        mov     ax,dseg         ; инициировать адрес сегмента данных
        mov     ds,ax           ; загрузить адрес в регистр DS
 
mov ax, 03              ; очистка экрана
int 10h 
 
mov ah,09h              ; Вывод сообщения message3
lea dx,message3
int 21h
 
MOV  AH,3CH             ; Запрос на создание
MOV  CX,00              ; обычного файла
LEA  DX,path_and_name   ; ASCIIZ строка
INT  21H                ; Вызов DOS
 
MOV  handle_of_file,AX  ;Сохранение файлового ID в HANDLE
 
start_of_ENTER:
mov ah,01h              ; ввод вимволов с клаdиатуры в файл
int 21h
mov help_param,al       ; сразу передаём ACSII - код нажатой кклавиши в вспомогательную переменную
 
cmp help_param, 'h' 
je   end_of_ENTER         
 
LEA  DX,help_param      ; указываем адрес вспомогательной перменной, в которой храниться введёный символ
MOV  AH,40H             ; номер функции записи в файл
MOV  BX,handle_of_file  ; Файловый номер
MOV  CX,1               ; Длина записи
INT  21H
inc  read               ; 
dec  number             ; После каждого ввода символа значение пременной уменьшаеться на 1
jnz  start_of_ENTER
end_of_ENTER:
 
mov ah,42h              ; установка курсора в файле
mov al,00h
mov bx,handle_of_file
xor dx,dx
xor cx,cx
int 21h
 
mov ah,3fh                        ; функция чтения файла
mov bx,handle_of_file
mov cx,read                       ; сколько читать
mov dx,OFFSET Buffer        ; чиатем в буфер
int 21h                     ; выполнить
        
MOV  AH,3EH                 ; Запрос на закрытие файла
MOV  BX,handle_of_file      ; Файловый номер
INT  21H                    ; Вызов DOS
 
MOV  AH,02H                 ; Перевод курсора на новоую строку
mov  dh,01
mov  dl,00
int 10h
 
mov ah,09h                  ; Вывод сообщения message2
lea dx,message2
int 21h
 
mov si, read                ; вывод на экран символов в обратном порядке
dec si
output_on_print:
mov ah,02h
mov dl,Buffer[si]
int 21h
dec si
cmp si,0
JGE output_on_print
 
MOV  AH,02H                 ; Перевод курсора на новоую строку
mov  dh,02
mov  dl,00
int 10h
 
;-----------------------------------------код----------------
  
  xor si,si
code_take:
  mov al, buffer[si]
  mov help_variable,'0'
  mov dl,10
  mov di,2
convert_code:
  cbw
  div dl
  add ah,48
  mov help_variable[di], ah
  dec di
  cmp al, 10
  jae convert_code
  add al,48
  mov help_variable[di],al
  
  mov ah,09h                 ; Вывод кодов
  lea dx,help_variable
  int 21h
    
  inc si
  cmp si, read
  jne code_take
 ;--------------------------------------------------------------------------- 
 
MOV  AH,02H                 ; Перевод курсора на новоую строку
mov  dh,03
mov  dl,00
int 10h
 
;-----------------------------------------код разность----------------
xor ax,ax
 xor cx,cx    
xor si,si
 code_take_edition:
  mov cl, 255                  ; 255 в СL
  sub cl,buffer[si]            ; 255 - ACSII код символа в buffer[si]  
  
  mov al,cl                     ; заношу разность в AL
  mov help_variable,'0'
  mov dl,10
  mov di,2
convert_code_edition:
  cbw
  div dl
  add ah,48
  mov help_variable[di], ah
  dec di
  cmp al, 10
  jae convert_code_edition
  add al,48
  mov help_variable[di],al
  
  mov ah,09h                 ; Вывод кодов
  lea dx,help_variable
  int 21h
    
  inc si
  cmp si, read
  jne code_take_edition
 ;--------------------------------------------------------------------------- 
MOV  AH,02H                 ; Перевод курсора на новоую строку
mov  dh,04
mov  dl,00
int 10h
 
 
;-----ВЫВОД НА ЭКРАН ДАТЫ (DONT TOUCH THIS FRAGMENT!!! I'M WRITING IT HOLE WEEK!!!------------------
mov ah,2ah      ; функция на запрос текущей даты у системы
int 21h          
mov year, CX    ; год (формат BCD)
mov month, DH   ; месяц (формат BCD)
mov day, DL     ; день (формат BCD)
 
   mov cl,10         ; обработка "дня", перевод в ASCII-код 
   mov al, day
   mov si,11
convert1:
   cmp al,10
   jb end_convert1
   cbw
   div cl
   add ah,48
   mov date[si],ah
   dec si
   jmp convert1
end_convert1:
   add al,48
   mov date[si],al
 
   mov cl,10            ; обработка "месяца", перевод в ASCII-код
   mov al, month
   mov si,14
convert2:
   cmp al,10
   jb end_convert2
   cbw
   div cl
   add ah,48
   mov date[si],ah
   dec si
   jmp convert2
end_convert2:
   add al,48
   mov date[si],al
 
   mov ax,year      ; обработка "года", перевод в ASCII-код
   mov bx,10
   mov si,20
   xor cx,cx
 convert3:
   dec si
   xor dx,dx
   div bx
   add dl,48
   mov date[si],dl
   test ax,ax
   jnz convert3
 
mov ah,09h        ; Вывод полной текущей даты на экран в формате "дд.мм.гг"
lea dx,date
int 21h
 
;-----------КОНЕЦ ОБРАБОТКИ ДАННЫХ О ДТЕКУЩЕЙ ДАТЕ-------------------------------
 
 
MOV  AH,02H                 ; Перевод курсора на новоую строку
mov  dh,05
mov  dl,00
int 10h
 
 
mov ah,09h                  ; Вывод сообщения
lea dx,message1
int 21h
 
mov ah,01h              ; прерывание на ввод символа с клаиатуры
int 21h
        
ret
lab1    endp
cseg    ends
        end     lab1
 


чувствую, что надо исправить строки 3-4, но как не знаю, что - то не нравиться ему моё вычитание с помощью sub

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

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

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


 




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


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

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