Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Assembler

Автор: Abs62
Дата сообщения: 13.02.2008 18:40
Ravenice

Цитата:
Как код с определением максимума слить с предыдущим, для двух массивов, причём максимум должен непременно быть отдельной процедурой?

Ну, примерно так:

Код: Max proc near
; Вход:
; ds:si - адрес массива
; cx - размер массива
; Выход:
; al - максимальное значение
cld
lodsb
mov bl,al
sub cx,1
jle @@3
@@1:
lodsb
cmp bl,al
jle @@2
mov bl,al
@@2:
loop @@1
@@3:
mov al,bl
ret
Max endp
Автор: Ravenice
Дата сообщения: 14.02.2008 22:57
Abs62
Это всё специально вместо "loop met21" написано, чтобы сложнее читать было?

Сорь, нет, это результат сидения перед моником на 7 паре
з.ы. А разве можно так далеко прыгать?

Благодарю за помощь
Теперь получились ввод\вывод, нахождение и вывод максимума

Максимум сделал чуть по другому (может кому пригодится... ), работает
(за cld и lodsb, которые мы похоже и не будем проходить меня бы )

max_c proc ;-----начало процедуры максимума
mov di,0
mov al,[bx][di]
max2:
cmp al,[bx][di]
jae max3
mov al,[bx][di]
max3:
inc di
loop max2
mov max,al
ret
max_c endp;----конец процедуры максимума

Обновил исходник, теперь думаю над С и разностями... (процедура ПОДСЧЁТ)
[more]include macro.lib
data segment
a db 100 dup (?)
b db 200 dup (?)
c db 300 dup (?)
n1 db ?
n2 db ?
m1 db 'Введите кол-во элементов 1 массива: $'
m4 db 'Введите кол-во элементов 2 массива: $'
m2 db 'Введите элементы 1 массива: $'
m3 db 'Вывод 1: $'
m5 db 'Вывод 2: $'
m6 db ' $'
m7 db 'Максимальный элемент 1: $'
m8 db 'Вывод 3: $'
m9 db 'Введите элементы 2 массива: $'
m10 db 'Максимальный элемент 2: $'
x dw ?
y db ?
n dw ?
t dw ?
d dw ?
k dw ?
m dw ?
max db ?
data ends
sst segment stack
db 128 dup (?)
sst ends
code segment
assume cs:code, ds:data, ss:sst
vvod_mas proc ;----ВВОД,ПРОЦЕДУРА
mov di,0
vv1:
key_$2bin
crlf
mov [bx][di],al
inc di
loop vv1
ret
vvod_mas endp ;----КОНЕЦ ВВОДА,ПРОЦЕДУРА
vivod_mas proc ;------ВЫВОД,ПРОЦЕДУРА
mov di,0
v1:
mov al,[bx][di]
cbw
print_number
message m6
inc di
loop v1
ret
vivod_mas endp ;----КОНЕЦ ВЫВОДА,ПРОЦЕДУРЫ
max_c proc ;-----НАЧАЛО ПРОЦЕДУРЫ МАКСИМУМА
mov di,0
mov al,[bx][di]
max2:
cmp al,[bx][di]
jae max3
mov al,[bx][di]
max3:
inc di
loop max2
mov max,al
ret
max_c endp;----КОНЕЦ ПРОЦЕДУРЫ МАКСИМУМА
pod proc;------ПОДСЧЕТ <<<<<<<<<<<<<<<<<<<<<
mov di,0
mov dl,max
pd1:
mov al,dl
sub al,[bx][di];
cbw    ;<<<<<<<<<<<
mov c[bx][di],al    ;X
inc di
loop pd1
ret
pod endp;----КОНЕЦ ПОДСЧЕТА
begin:
mov ax,data
mov ds,ax
;начало
cls
message m1    ;введите кол-во эл-тов в массиве 1
key_$2bin
crlf
mov n1,al
cbw
mov cl,al
lea bx,a
message m2    ;введите элементы массива
call vvod_mas ;-----ввод 1 массива
mov cl,al
lea bx,a
call max_c    ;МАКС ДЛЯ 1
mov al,max
cbw
mov k,ax
;print_number
crlf
;<<конец 1 части,массив 1 и его максимум
message m4    ;введите кол-во эл-тов в массиве 2
key_$2bin
crlf
mov n2,al
cbw
mov cl,al
lea bx,b
message m9    ;введите эл-ты массива
call vvod_mas ;-----ввод 2 массива
mov cl,al
lea bx,b
call max_c    ;МАКС ДЛЯ 2
mov al,max
cbw
mov m,ax
mov cl,n1
lea bx,a
message m3    ;вывод 1
call vivod_mas ;-----вывод 1 массива
crlf
mov cl,n2
lea bx,b
message m7
mov ax,k
print_number
crlf
;lea bx,b
;call pod
message m5    ;вывод 2
call vivod_mas ;-----вывод 2 массива
crlf
message m10
mov ax,m
print_number
crlf
    ;конец
mov ax,4c00h
int 21h
code ends
end begin[/more]
Автор: Abs62
Дата сообщения: 14.02.2008 23:21
Ravenice

Цитата:
з.ы. А разве можно так далеко прыгать?

short переход работает в диапазоне от +127 до -128 байт от команды перехода. Разве там больше?
Автор: Ravenice
Дата сообщения: 16.02.2008 17:15
Abs62
Да, в некоторых местах больше, компилятор пресекает)
Автор: metal_anton
Дата сообщения: 25.02.2008 00:38
люди скажите где скачать ассемблер под винду, а то в дос уходить не хочится а найти под винду не могу парочку сцыл в гугле открыл половина убитые, а половина старые под дос
Автор: SERGE_BLIZNUK
Дата сообщения: 25.02.2008 02:25
metal_anton
посмотрите на Wasm-Компиляторы
Вроде бы WinAsm (IDE для MASM) Вам должен подойти... хотя я не пробовал!
Автор: luzver
Дата сообщения: 28.02.2008 13:22
Всем привет. Поделитесь сырцом будильника или просто панировщика выполнения определенного действия в определенное время на .386 на масм.
Автор: Deni005
Дата сообщения: 01.03.2008 10:43
Помогите пожалуйста.


Цитата:
Проанализировать фрагмент программы, определить содержимое аккумулятора или порта р0, рассчитать время выполнения программы при тактовой частоте fт=12МГц:

mov     a,#05h
mov     r1,#00h
loop: inc     r1
clr     с
subb     a,r1
jnz     loop
mov a,r1
mov     p1,a

Заранее благодарен.
Автор: Compik
Дата сообщения: 02.03.2008 05:07
Привет !
Если это не длинно и не сложно, дайте листинг удаления ключа из реестра WinXP. Например HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved\{F33C79B0-0497-A1AD-59E4-AA2F938D9AD1}
Воспользоваться regedit-ом не предлагать.
Автор: zhornik
Дата сообщения: 02.03.2008 13:44
Добрый день!
У меня возникла такая проблема:
Нужно написать программу которая изменяет системное время и дату.
Для этого я использовал функции 2bh и 2dh прерывания int 21h.
2bh изменяет системную дату и работает оно нормально, а вот 2dh не изменяет
время в windows. В чем может быть причина?
Автор: wetsoft
Дата сообщения: 20.03.2008 21:02
2 metal_anton
использую самодельную программку,
если уже не актуально то может кому пригодится
http://www.wetsoft.narod.ru/soft/forasm.rar
Автор: Impeg
Дата сообщения: 17.04.2008 23:39
Помогите решить пожалуйста, срочно нада:
Выполнить преобразование целого числа с фиксированной запятой в формат с пла-вающей запятой:
Числа хранятся в ОЗУ.
Автор: vadme28
Дата сообщения: 04.05.2008 13:29
Всем прив! Помогите кто нить, как в ассемблере из двух разных строк, зделать одну!!!! ???
Автор: RedPromo
Дата сообщения: 06.05.2008 16:41
vadme28
Можно попробовать так

Код: mov CX, strllen             ; Столько байтов переслать
получение полного
указателя (сегмент: смещение) на ячейку памяти откуда, куда
lea SI, strl             ;Теперь DS:SI-> строка-источник
lea Dl, text            ;Теперь ES:DI-> строка-приемник
cld                        ;Двигаться по строке вперед
rep movsb             ;Пересылка СХ байт
Автор: bv_s
Дата сообщения: 10.05.2008 16:49
Приветствую всех!
Помогите в следующей проблеме:
В ноутбуке сдох контроллер клавы, но это пол беды.
Всё прекрасно работало пока BIOS не сбросился на значения по умолчанию. Теперь нет возможности загрузиться и/или войти в CMOS, т.к. останавливается на ошибке «0211:Keyboard error».
Могу лишь переписать BIOS, симулировав сбой контрольной суммы.
Кто может отучить биос останавливаться на ошибке клавиатуры?
Архив (870 Kb) диска аварийного востановления с исходным биосом лежит здесь:
http://rapidshare.com/files/113906661/__1057_risis_recovery_disk.rar.html
Автор: Triobsd
Дата сообщения: 11.05.2008 13:38
Всем доброго дня, помогите решить пожалуйста, заранее благодарен.
1.Написать команду, обеспечивающую выполнение следующей операции (для МП ВМ86):
[(BX)]<-0000.
Определить время выполнения команды (частоту генератора задать самостоятельно), а также объем занимаемой памяти.
2.Установить 1, 3, 5 биты порта 0 (для МК51).
3.Написать для МП ВМ86 фрагмент программы для вычисления выражения:
z=2*(X+YT),
где X, Y, T – беззнаковые операнды, хранящиеся в ячейках памяти с адресами, находящимися соответственно в регистрах BX, CX, DX.
Результат занести в аккумулятор.
Определить время выполнения программы (частоту генератора задать самостоятельно), а также объем занимаемой памяти.
4.Расшифровать следующую команду, заданную машинным кодом, и записать ее мнемонику (для МП ВМ86):
10001001001.
Определить время выполнения команды (частоту генератора задать самостоятельно), а также объем занимаемой памяти.
5.Загрузить управляющее слово в регистр управления таймером (для МК51).
6.Написать для МП ВМ86 фрагмент программы, обеспечивающий сложение двух 16-битовых слов, хранящихся в парах ячеек памяти, начиная с ячейки с меткой BEG. Результат необходимо поместить в ячейку с меткой RES. Определить время выполнения программы (частоту генератора задать самостоятельно), а также объем занимаемой памяти.
Автор: LeeooLion
Дата сообщения: 12.05.2008 05:02
Помогите решить задачку, заранее Спасибо!
Ввести с клавиатуры две строки. Вывести на экран все символы, которые содержатся в обеих строках.
Автор: Nino4ka
Дата сообщения: 19.05.2008 22:06
Люди, кто знает асм - нужно ввести поле A из 16-ти символов, которые будем считать занумерованными чис-лами от 1 до 16. Вводится поле B такой же длины. Зашифровать текст А, используя прием: сначала переставить байты в следующем порядке 3, 16, 14, 1, 9, 6, 10, 2, 13, 11, 5, 12, 4, 8, 7, 15. Затем применить операцию XOR посимвольно для строк А и В. После вывода результата расшифровать текст, повторно применив тот же прием в обратном порядке. При решении задачи описание полей из 16-ти байтов оформить с использованием директив IRP или IRPC.
Автор: major87
Дата сообщения: 20.05.2008 12:54
Здравствуйте!Помогите пожалуйста с решением пары задач!
1) Для заданного текста определить длину содержащейся в нем максимальной серии символов,отличных от букв!
2) Найдите наименьшее общее кратное всех чисел,содержащихся в заданной последовательности натуральных чисел!
Автор: mytommy
Дата сообщения: 26.05.2008 22:08
написать программу (платно!!!), вот задание

&#61485;
задан массив символов, элементы которого должны быть введены с клавиатуры;
&#61485; результатом работы программы поиска является либо строка 'элемент найден', либо 'элемент не найден';
&#61485; символ для поиска должен вводиться с клавиатуры;
&#61485; результат программы сортировки - исходный и отсортированный массивы;
&#61485; программа должна быть зациклена, прекращение работы программы - нажатие <ESC>;
&#61485; количество элементов в массиве не менее 10.


Алгоритм - Сортировка с поразрядным группированием. Количество символов в 1 строке - 2

если нужно, вот методичка (с. 24, вариант - 8)

с Вас цена, нужно сделать до утра завтрашнего дня (до 7-00 по Киеву)
Оплата - wmz, wmr, Я.Д

для связи лучше icq (69_845_1)
Автор: Djuls
Дата сообщения: 28.05.2008 22:15
Помогите кто может плиззззззз
Задача:
В строке заменить символ "а" на "b"
Автор: M0rz
Дата сообщения: 28.05.2008 22:58
Всем привет!
Помогите пожалуйста с такой задачкой:
Отсортовать стопцы матрицы А(n,m)....
Автор: Qraizer
Дата сообщения: 30.05.2008 18:35
Похоже, топик скорее мёртв, чем жив... Наверное, тот, кто его создавал, не думал, что тут будут настолько неинтересные задачи.
Автор: akaGM
Дата сообщения: 30.05.2008 20:59
ну я создавал, т.е. по моей просьбе...
мешает? -- грохните...
Автор: rich33
Дата сообщения: 02.06.2008 22:30
Помогите срочно сделать 2 несложные задачи
Ввести с клавиатуры матрицу целых чисел, размером 4х4. Поменять в ней местами
столбцы, которые содержат первый минимальный и первый максимальный элемен-
ты матрицы.
Ввести с клавиатуры строку, состоящую из английских слов, разделенных знаками
препинания. Найти количество слов в строке и вывести его на экран.
Автор: Katrin90
Дата сообщения: 05.06.2008 16:15
Привет всем!хороший сайт,спасибо модератору. У меня небольшая проблема. В субботу зачет,очень важный по ассемблеру.а я не очень хорошо его понимаю.Задачи интересные,но сложные. Помогите сдать зачет,пожалуйста
Автор: bornbill
Дата сообщения: 06.06.2008 20:26
Qraizer
изучал асм в 2000 году давно не сталкивался кроме мелких задач
отсюда вопросы
1. дока по работе асм в win(xp\vista) (на русском для чайников хоть и есть мсдн всё не перечитаеш тем более задачи тривиальные)
2. примеры\сырцы работы с поп3\смтп
Автор: SERGE_BLIZNUK
Дата сообщения: 06.06.2008 22:25

вот какие книжки в электронном виде существуют
(разумеется, их много больше, но эти точно есть!):

"Язык ассемблера. Уроки [П.И. Рудаков, К.Г. Финогенов.]"
"Ассемблер на примерах. Базовый курс [Рудольф Марек]"
"Assembler. Учебник для вузов [Виктор Юров]"
"Ассемблер практикум [В.И.Юров]"
"Ю.Магда-Ассемблер для процессоров Intel Pentium"
"Ю.Магда-Ассемблер. Разработка и оптимизация Windows-приложений"
Зубков С.В. Assembler - язык неограниченных возможностей (chm)


Автор: akaGM
Дата сообщения: 07.06.2008 12:42
SERGE_BLIZNUK
если есть возможность, то может это в шапку?
Автор: redwhiterus
Дата сообщения: 07.06.2008 14:47
SERGE_BLIZNUK
Присоединяюсь, выложи если не сложно

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384

Предыдущая тема: .NET GUI компоненты


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.