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

» Assembler

Автор: eu8cc
Дата сообщения: 05.03.2009 14:08
Помогите найти TD32.exe
Автор: alecksey1984
Дата сообщения: 12.03.2009 18:15
вопрос профессионалам ассемблера:
насколько реально переписать Веб-сервер с Дельфи на АСМ.
будет ли от этого существенное повышение быстродействия?
Автор: SERGE_BLIZNUK
Дата сообщения: 12.03.2009 21:28
alecksey1984
я не профессионал Ассемблера.
но:
1) Вы ЯВНО не представляете себе что означает "переписать Веб-сервер с Дельфи на АСМ"!!! ни по затратам времени, ни по финансовым затратам!!
Если это вообще реально!!!!

2) Деталей для ответа явно маловато - что за "Веб-сервер", что делает, какая нагрузка и т.д.
Так что - просто ИМХО, большого прироста производительности это не даст!!
а вот если его переписать ГРАМОТНО (на любом языке, хоть на том же Дельфи), то это может принести ГОРАЗДО больше пользы в плане эффективности.
Впрочем, это зависит от сотен разных факторов. Так, "с кондочка", конкретный ответ дать невозможно.
Автор: bobrin9
Дата сообщения: 12.03.2009 22:10
ребят, помогите кто нить плиз, я что то вообще не понимаю что к чему)

Создать с помощью директивы ММ монитора во внутреннем ОЗУ массив из натурального ряда чисел от 0 до 21, начиная с адреса 30Н. Отладить и запустить прогу, с помощью которой переслать во внешнюю память, начиная с адреса 5000Н, все элементы массива, кратные 3, с адреса 5030Н-кратные 4
Автор: fufar
Дата сообщения: 13.03.2009 00:51
Помогите решить задание! Заранее спасибо.

Дан список из 20 слов по 10 символов в каждом. Напечатать
его в обратном алфавитном порядке, предварительно удалив из него
повторяющиеся слова. При сортировке игнорировать высоту букв
(Например, A = a).
Автор: alecksey1984
Дата сообщения: 13.03.2009 09:35
SERGE_BLIZNUK
Основанный на компонентах Indy Веб-сервер использует концепцию скриптов DVS в своем формате файла. Задача в том и состоит партировать на Assember Indy и механизм парсировки-исполнения скриптов DVS.
Автор: Aisha Dare
Дата сообщения: 16.03.2009 23:11
Помогите, задача: пузырьковая сортировка на ассемблере под дос
есть процедура осуществляющая это (взята с книги Зубкова "Асемблер для ДОС, Виндовс и Линукс").
Ее необходимо оформить в програмку с выводом масива "до" и "после". Размер масива в близи 20 элементов
Заранее благодарю!!
Автор: SERGE_BLIZNUK
Дата сообщения: 17.03.2009 07:10
Aisha Dare
массив из 20 элементов ЧЕГО?! (строки, числа, размер элемента!)

приведите исходный текст
(только обязательно спрячьте программку за тегами (это специальные ключевые слова в квадратных скобочках )
т.е. сделайте так:
напишите [no][MORE]
Код:
тут исходный текст Вашей программы
...
потом тэги надо закрыть:
Автор: Aisha Dare
Дата сообщения: 18.03.2009 13:23
сортировка чего угодно можно чисел, можно слов. Пожалуй числа нагляднее.
процедура:
[MORE]
Код:
; Процедура bubble_sort
; сортирует массив двойных слов методом пузырьковой сортировки
; ввод: DS:EDI = адрес массива
; EDX = размер массива (в двойных словах)
bubble_sort proc near
pushadw
cld
cmp edx,1
jbe sort_exit ; выйти, если сортировать нечего
dec edx
sb_loop1:
mov ecx,edx ; установить длину цикла
xor ebx,ebx ; EBX будет флагом обмена
mov esi,edi ; ESI будет указателем на
; текущий элемент
sn_loop2:
lodsdw ; прочитать следующее слово
cmp eax,dword ptr [esi]
jbe no_swap ; если элементы не
; в порядке,
xchg eax,dword ptr [esi] ; поменять их местами
mov dword ptr [esi-4],eax
inc ebx ; и установить флаг в 1,
no_swap:
loop sn_loop2
cmp ebx,0 ; если сортировка не закончилась,
jne sn_loop1 ; перейти к следующему элементу
sort_exit:
popadw
ret
bubble_sort endp
Автор: Styks
Дата сообщения: 22.03.2009 13:41
Написание программы-текстового редактора
Написать программу-примитивный текстовый редактор. программа должна вводить информацию с клавиатуры и отображать ее на экране монитора. Ввод данных должен выполняться с использованием функций BIOS. Управление курсором должно выполняться через регистры видеоконтроллера. Программа должна отрабатывать нажатия на клавиши Enter, BackSpace, Delete, а так же ←,↑,→ и ↓. Текст должен быть сохранен в файле при помощи функций DOS.

Помогите пожалуйста))
Автор: akaGM
Дата сообщения: 22.03.2009 14:49
Styks
задача довольно объёмная, никто её делать не будет, так что не теряй время -- или ищи готовый код, или найми кого-нибудь
Автор: arhey262
Дата сообщения: 07.04.2009 20:34
Люди добрые!!!! Помогите пожалуйста с задачей!!! Завтра экзамен, а я в этом ни бум-бум почти! Очень срочно!!! Заранее спасибо!

написать программу на языке Ассемблера для решения задачи:
на входы порта поступают сигналы 0 или 1 от восьми датчиков. Необходимо постоянно опрашивать состояние датчиков. Если число единиц на входе порта больше 5 в порт вывода выводится код FF16. В противном случае в порт вывода выводится код 0016. Произвести трансляцию в объектную программу.
Автор: akaGM
Дата сообщения: 07.04.2009 20:38
arhey262
если ты из гуманитарного вуза, то тебе прямая дорога сюда,
а если ты учишься на "программиста", да ещё системщика-хардверщика, то извини...
Автор: phoenixwow
Дата сообщения: 14.04.2009 17:18
Задан массив из 20 элементов.Найти и вывести последний из четных элементов массива кратный числу 8

буду признателен если поможете с этой задачей!
Автор: Vostrikovskiy
Дата сообщения: 21.04.2009 13:56
Ребята, кто-нибудь знает какую-нибудь книженцию по асму x64, выложенную в инете?
Автор: akaGM
Дата сообщения: 23.04.2009 12:04
Vostrikovskiy
шапку первого письма слабО посмотреть?
Автор: Vostrikovskiy
Дата сообщения: 23.04.2009 15:27
akaGM
Я не понял, какого первого письма? Где оно находится?


Автор: SERGE_BLIZNUK
Дата сообщения: 24.04.2009 08:31
Vostrikovskiy
вверху темы часто есть сообщение, которое видно на каждой странице темы.
Это называют "шапкой" темы.

в данной шапке есть ссылка на литературу:

Ассемблер - книги (ASM, Assembler)
Автор: Vostrikovskiy
Дата сообщения: 24.04.2009 17:22
SERGE_BLIZNUK
Спасибо: переправил свой вопрос туда.
Автор: leshenka
Дата сообщения: 26.04.2009 22:43
Вывести наименьший нечетный элемент массива кратный числу 7.

помогите плиз
Автор: molko
Дата сообщения: 05.05.2009 14:20
пожалуйста помогите решить простую задачку
Задан массив(вводить не нужно) Нужно проверить повторяется ли максимальный элемент в массиве.Вывести сообщение типа Да или Нет.
вот написал скелетик, все что смог написать (остальное не могу написать хоть убей)
.model tiny
.code
org 100h
start:

;....помогите..............
;.....пожалуйста.............

Arr dw 1,6,3,4,6 ;заданный массив
n dw 5 ;кол-во элементов
Res_yes db 'Yes'
db 0Dh,0Ah,'$'
Res_no db 'No'
db 0Dh,0Ah,'$'
end start

Автор: SERGE_BLIZNUK
Дата сообщения: 05.05.2009 16:21
molko
что именно не получается!!?

я вижу два алгоритма решения.
1) эффективнее (однопроходный), но чуть-чуть сложнее:
в начали иницилизация:
Max := Arr[1]
Cnt := 1
проходим в цикле от 2 до n, ищем максимальный элемент, каждый раз, найдя элемент больше имеющегося
[no]
if Arr[i]> Max then
Max := Arr[i]
Cnt := 1
else
if Max = Arr[i] then Cnt := Cnt + 1

после цикла - if Cnt>1 then write('YES')
else write('NO')
[/no]
2) алгоритм - проходим один раз, ищем максимальные элемент.
второй раз проходим, считаем, сколько раз он встретился.
Дальше - проверка такая же...

p.s. я бы выбрал первый алгоритм. он красивее :)
Автор: molko
Дата сообщения: 05.05.2009 16:41
не получается почти все. вообще ассемблер туго очень понимаю.
SERGE_BLIZNUK
на паскале эту задачу и я смогу написать за пару минут, а вот на ассемблер перевести не могу. вот прошу вашей помощи!
Автор: aridtree
Дата сообщения: 05.05.2009 19:16
;; компилятора нету, проверить не смог)
;; но что то вроде того:
    mov AX,CS
    mov DS,AX    ;;load prog register
    lea DX,arr
    mov BX,MAX
    mov CX,n
    xor SI,SI
next:
    cmp [DX],BX    ;;cpavnivaem s max
    jl NextHel    ;;если меньше то сразу след элемент
    jne neEq    ;;если больший то обраб
    inc SI        
    jmp nextHel
neEq:
    mov BX,[DX]
    xor SI,SI
NextHel:
    

;;next helem
    inc DX
    inc DX
    dec CX
    jnz next
    
    mov AX,09h
    text SI,SI
    jnz yyyyes
    lea DX,Res_no    ;; прерывание вывода на экран строки,
;; но не помню точно ли в дх должен быть её адресс
    int 21h
    int 29h        ;;
yyyyes:
    
    lea DX,Res_yes
    int 21h
    int 29h        ;;не помню, вроде это прерывание заканчивает
    MAX dw 0    ;;max Element    
    
Автор: Prober
Дата сообщения: 05.05.2009 19:50
molko
Давненько я на ДОСовском ассемблере не писал...
Примерно так:

Код: .model tiny
.code
org 100h
start:

mov dx, Arr ; первый элемент массива
mov cx, n ; количество элементов
dec cx ; количество сравнений (на 1 меньше количества элементов)
xor bx, bx ; результат (0 - повторов нет, 1 - есть)
; далее обрабатываем элементы начиная с последнего и до второго
m1:
lea si, Arr
add si, cx
add si, cx
mov ax, [si]
cmp ax, dx
jb m3
ja m2
mov bx, 1
jmp m3
m2:
mov dx, ax
xor bx, bx
m3:
loop m1
; обработка закончена, печатаем результат и завершаемся
lea dx, Res_no
or bx, bx
je m4
lea dx, Res_yes
m4:
mov ah, 09h
int 21h
mov ax, 4C00h
int 21h

Arr dw 1,6,3,4,6 ;заданный массив
n dw 5 ;кол-во элементов
Res_yes db 'Yes'
db 0Dh,0Ah,'$'
Res_no db 'No'
db 0Dh,0Ah,'$'
end start
Автор: molko
Дата сообщения: 06.05.2009 13:37
Prober и
aridtree большое спасибо!


Добавлено:
еще маленькая просьба есть.
Нужно реализовать ввод с клавиатуры и вывод массива состоящего из целых чисел, я сделал тока ввод и вывод одного целого числа. не знаю как сделать цикл, не подскажете как это сделать? да еще вначале необходимо вводить размерность массива а потом уже ввод элементов и их вывод
Код:

Код: .MODEL tiny
.CODE
org 100h
; ввод с клавиатуры целого числа и вывод его на экран
_start:

; ввод числа в регистр AX
call ReadInteger
mov A,ax

; перевод строки
mov ah,09h
lea dx,crlf
int 21h

; вывод заголовка
mov ah,09h
lea dx,res
int 21h

; вывод числа из AX
mov ax,A
call WriteInteger
ret

; ввод 10-числа в регистр AX
ReadInteger proc
push cx ; сохранение регистров
push bx
push dx
mov fl,0 ; флаг отрицательного числа
xor cx, cx
mov bx, 10
call ReadChar ; ввод первого символа

cmp al,'-' ; если минус - установить флаг
je nnn
jmp nn
nnn:
mov fl,1

read:

call ReadChar ; ввод очередного символа
nn: cmp al, 13 ; Enter ?
je done ; да - > завершение

sub al, '0' ; нет -> перевод цифры char -> int
xor ah, ah
xor dx, dx
xchg cx, ax
mul bx
add ax, cx
xchg ax, cx
jmp read
done:
xchg ax, cx
cmp fl,1
je eee
jmp ee
eee:
neg ax
ee:
pop dx
pop bx
pop cx
ret
ReadInteger endp

; ввод одного символа
ReadChar proc
mov ah,1
int 21h
ret
ReadChar endp

; вывод 10-числа
WriteInteger proc near
push ax
push cx
push bx
push dx
xor cx, cx
mov bx, 10
; число отрицательное?
cmp ax,0
jl ddd    ; если - да
jmp divl    ; если - нет
; вывести минус и поменять знак
ddd:
push ax
mov dl, '-'
mov ah, 2
int 21h
pop ax
neg ax

; получить 10-цифры и поместить их в стек,
; в cx - количество полученных цифр
divl:
xor dx, dx
idiv bx
push dx
inc cx
cmp ax,0
jg divl

; достать из стека, перевести в код ASSII и вывести
popl:
pop ax
add al, '0'

call WriteChar
loop popl

pop dx
pop bx
pop cx
pop ax
ret
WriteInteger endp

; вывод одного символа
WriteChar proc
push ax
push dx
mov dl, al
mov ah, 2
int 21h
pop dx
pop ax
ret
WriteChar endp

A dw 67
fl dw ?
res db 'res', 0dh,0ah,'$'
crlf db 0dh,0ah,'$'
end _start
Автор: Ickorka
Дата сообщения: 06.05.2009 16:11
Помогите, пожалуйста....
Нужно вычислить в цикле следующее выражение z=(x+6)*J/(13-Y) при J=1,2,..7 и записать результат в последовательные адреса памяти
Автор: bobkalak
Дата сообщения: 06.05.2009 19:04
Задача: Вычисление обратной матрицы порядка 1000х1000.

Саму задачу можно реализовывать на любом языке, но основные алгоритмы должны быть на асм. Вообщем использовать можно асм вставки. Мучаюсь уже давно.
Автор: aridtree
Дата сообщения: 08.05.2009 16:47
Ickorka, если Z помешается в байт, и ответ целочисленный

Цитата:

.model tiny
.stack 10h
.code
org 100h
start:
mov AX,CS
mov DS,AX
xor AH,AH
mov AL,X
add AL,6
mov BL,Y
neg BL
add BL,13
div BL

push AX    ;;AX x+6/13-y
mov BL,1


aga:
xor BH,BH
imul BL
mov SI, BX
mov answer[SI],AX

pop AX
push AX
inc BL
cmp BL,7
jne aga

;; lea DI,answer ;;ответ здесь.
mov AX,4c00h
int 21h


X db 6
Y db 11
answer dw 7 dup (?) ;;на самом деле здесь.
end start

molko
неясно, что ты хочешь...
но типо того видимо:

Цитата:

xor SI,SI
call ReadInteger

read:
test AX,AX
jz doneit
dec AX
push AX

call ReadInteger
mov mas[SI*2],AX
pop AX
jmp read

doneit:


Автор: Ickorka
Дата сообщения: 08.05.2009 23:20
to aridtree. Спасибо вам за ответ. Только я не совсем разберу то, что вы написали. как-то мы не так эти програмки пишем. Я сама написала, только не могу найти ошибку...не работает она у меня..если не сложно , посмотрите, только для немного другого условия Z=(X+Y)*J J=1,2...5 :
DATAS SEGMENT ;
X DW 3
Y DW 6
J DW ?
I DW 0,0,0,0,0,0,0,0,0,0
DATAS ENDS
CODES    SEGMENT
    ASSUME CS:CODES,DS:DATAS
PROGRAM:
MOV AX,DATAS
MOV DS,AX
MOV CX,10
MOV AX,0
JCXZ K
A: INC AX
LOOP A
MOV CX,5
MOV J,5
MOV BX,OFFSET I
B: MOV AX,X
ADD X,Y
MUL J
MOV [BX],AX
ADD BX,2
DEC J
MOV DX,J
CMP J,DX
LOOPZ B
JMP K
K:
mov I,ax
MOV AX,4C00H
INT 21H
CODES ENDS
END PROGRAM

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384

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


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