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

» Assembler

Автор: bomzzz
Дата сообщения: 10.05.2010 21:56
любой учебник открой
Автор: Rooftop
Дата сообщения: 10.05.2010 22:04
в том и дело, я в етом полный ноль. а нужна готовая программа. если бы мог открыть учебник то необращался бы сюда 8)

а тут я надеюсь есть хорошие люди
Автор: bomzzz
Дата сообщения: 10.05.2010 22:07
у тебя задачи односложные примеры есть в любом учебнике. если надо для 16 битного процессора вот можешь эммулятор скачать тут примеры для всех простых случаев
http://www.emu8086.com/
Автор: Rooftop
Дата сообщения: 10.05.2010 22:18
спасибо. отличная программа: открыл ее, поклацал, нефига непонятно...
проблему нерешыл некапли...
Автор: bomzzz
Дата сообщения: 10.05.2010 22:27
как все запущено

Добавлено:
C:\emu8086\examples
эту папку открой там все примеры в файлах, файл такая штука два раза щелкаешь правой клавишей мыши он открывается в связанной программе
Автор: Rooftop
Дата сообщения: 10.05.2010 22:56
спс. тупил. разобрался.
там кучя всяких примеров но нужного нету(
Автор: bomzzz
Дата сообщения: 10.05.2010 22:59
C:\emu8086\examples\file-operations.ASM
Автор: Rooftop
Дата сообщения: 10.05.2010 23:11
спасибо! но чтото она после компмляции ошибку при запуске выдает.
немог бы ты сделать готовый файл и залить его куданить? был бы очень благодарен.
Автор: bomzzz
Дата сообщения: 10.05.2010 23:18
пример в эммуляторе открой и compile нажми. это на фасме наверно написано. и еще тебе надо часть кода выкинуть.
http://bomz-co.narod.ru/fileio.rar
Автор: aspis
Дата сообщения: 11.05.2010 07:14
Rooftop
Так не пробовали Гугл


Цитата:
в том и дело, я в етом полный ноль.

Цитата:
нужна готовая программа


Цитата:
для тех кто считает, что здесь место халявных исполнений курсовых и лабораторных работ.
тут обычно помогают тем, кто сам хоть что-то пытается понять и сделать, но что-то не понимает, что-то не получается...
ведь ассемблер изучают и задачки на нём дают обычно не менеджерам по продажам и даже не всем физ.-мат. специальностям
вы сами избрали этот путь? вот и идите по нему сами, ножками... с ручками и с головой...

Автор: bomzzz
Дата сообщения: 11.05.2010 10:19
я бы не был настолько категоричен:

Цитата:

глупо надеятся, что найдутся желающие делать за вас курсовую работу или разбирать страничный код.
Автор: akaGM
Дата сообщения: 11.05.2010 13:04

Цитата:
я бы не был настолько категоричен:

для тех, кого учат ассемблеру, я ещё мягко зарядил...
имхо
Автор: bomzzz
Дата сообщения: 11.05.2010 13:10
можно подумать ты знаешь сайт, где делают курсовые работы.
Автор: akaGM
Дата сообщения: 11.05.2010 13:59
по кр. мере на этом сайте я знаю топ где их делают
и для начала он мог бы попробовать стрельнуть сюда
и не я ему профессию/фак выбирал
а вообще мне пох
Автор: Rooftop
Дата сообщения: 14.05.2010 06:07
ето не курсовая. и помощ нужна совсем не мне, хотел сделать человеку приятно и найти для него нужную ему штуку....
сам я менеджер вед, потому в етом и нешарю.
надеялся что тут мне помогут.... видать зря...
Автор: aspis
Дата сообщения: 14.05.2010 07:17

Цитата:
ето не курсовая. и помощ нужна совсем не мне, хотел сделать человеку приятно и найти для него нужную ему штуку....

ИМХО, бред или парадокс ... уже менеджеры ищут код программистам да еще и на асме . Выполняйте лучше свою работу, не лезьте в код и оставьте программистам самим искать что нужно.
Автор: akaGM
Дата сообщения: 14.05.2010 13:01
LOL
Автор: bomzzz
Дата сообщения: 14.05.2010 13:03
ему пример кода нашли, который есть в любом учебнике, а толку никакого
Автор: Qraizer
Дата сообщения: 15.05.2010 03:09
Rooftop, не надо вот только... Где это видано, чтобы менеджеры были заинтересованы в тупых кадрах?
Надо ж так палиться.
Автор: SAFERON
Дата сообщения: 19.05.2010 14:08
Помогите не могу понять в чём ошибка, а завтро сдавать курсавую.

Вот прога на расчёт значения формулы в которой заданы четыре операнда(A B C D; У каждого из них есть: значение и адрес; Значение и адрес заданы в: decimal bin hex ) и адрес результата:

org 100h
In Al,014h
not al
inc al
mov bl,0c1h
add al,bl
mov cl,al
mov al,045h
add al,cl
mov cl,al
mov al,cl
not al
inc al
mov bl,al
mov al,0f7h
add al,bl
out 05456h,al

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

out 05456h,al - First operand (port) should be 0..255 or DX.
Как это исправить???
Автор: blaro
Дата сообщения: 19.05.2010 14:11
SAFERON

Цитата:
out 05456h,al - First operand (port) should be 0..255 or DX.
Как это исправить???

out Port Number,Value
out принимает порт от 0 до 255 а у тебя номер порта больше чем надо.

Добавлено:
попробуй переместить в DX номер порта а потом
out DX,al
Автор: akaGM
Дата сообщения: 19.05.2010 14:53
я фигею, зачем при вычислении формулы нужны ftp и udp порты...
кто-нибудь просветит или здесь пахнет вирусятником?
Автор: blaro
Дата сообщения: 19.05.2010 15:00
akaGM

Цитата:
я фигею, зачем при вычислении формулы нужны ftp и udp порты...
кто-нибудь просветит или здесь пахнет вирусятником?

SAFERON хочет захватить мир!
Автор: SAFERON
Дата сообщения: 19.05.2010 16:22
Спасибо blaro =)

akaGM это не вирус это препод загнул на курсач =)
Автор: promotic
Дата сообщения: 21.05.2010 17:27
Всем добрый вечер.
Требуется аналог кода pascal на ассемблере данных операций:
оператор repeat ... while ...;
действия сложения, вычитания, умножения, деления и инкремент
Заранее спасибо.
Автор: akaGM
Дата сообщения: 21.05.2010 17:57
promotic

Цитата:
действия сложения, вычитания, умножения, деления и инкремент

add, sub, mul/imul, div/idiv, inc
в книге сложно было посмотреть?

Цитата:
repeat ... while

смотри "операторы перехода" -- разные jump'ы и примеры к ним
Автор: Primat081
Дата сообщения: 28.05.2010 17:56
Здраствуйте!!!
Нужно написать программу с несколькими модулями, используя EXTRN. Это вроде разобрал.
Составить процедуру, которая представляет на экране строку символов в виде мат-рицы размерности n*m. Использовать эту процедуру для кодирования и декодирова-ния сообщения путем представления его в виде матрицы заданного вида (размерность подбирается в диалоге) и последующей перемены местами указанных пар столбцов и строк.
Заранее спасибо!
Автор: KuPbI4
Дата сообщения: 30.05.2010 21:03
Подскажите пожалуйста, я вот никак не могу найти ошибку в ассемблере:
Условие такое:
Переслать массив из дополнительного сегмента в другую область того же сегмента со следующими изменениями элементов: добавить 5, если элемент неравен 0.
Работает она с вводом и выводом клавиатуры. Но выводит не так как хотелось увидеть:
К примеру: Enter Aarray: 1230 Array: 1111 Dest: 1111
А хотелось бы увидеть Enter Aarray: 1230 Array: 1235 Dest: 1235 и что то подобное
Подскажите пожалуйста где ошибка?!
Выкладываю код:

Код:
;------------------------------// Stack segment //---------------------------------------

sta segment para stack 'stack' ;определяем имя класса (stack) к которому
                 ;относится сегмент с именем sta
db 255 dup('stack')         ; минимальный размер
sta ends

;-----------------------------// Data segment //----------------------------------------

dseg segment

Asource db 1,2,3,4     ;012h,01Ch,0Bh,04Fh
                ;определили массив Asource из 4 констант:

Dest db 4 dup(?)      ;размер массива приемника

dseg ends
;------------------------------------------
DStr segment

IAMessage db'Enter Asource:$'

OAMessage db'Array Asource:$'

ODMessage db'Array Dest:$'

DStr ends
;-----------------------------// Code segment //---------------------------------------
cseg segment
assume CS:cseg,DS:DStr,ES:dseg,SS:sta ;ассоциация сементных регистров.

Entry proc far ;главная процедура.
push DS ;при запуске exe прграммы регистр DS ук-ет на ее заголовок,считанный         
         ;в память и т.к тело программы оп-ся как прцедура,то первой
         ;командой идет push DS, которая сохраняет в стеке нач-ое значение DS.
;------------------------Init ES----------------------------
sub AX, AX     ;обнуляем AX
mov AX,dseg ;инициализация сегмента доп.данных
mov ES,AX
;-------------------------Init DS---------------------------
sub AX,AX ;обнуляем AX
mov AX,DStr ;инициализация сегмента данных
mov DS,AX
;----------------------------------------------------
    mov BX, offset Asource    ;массив - источник A
    
    call AIn
    call AInput

    mov DI, offset Asource    ;массив - источник A | - определение индексов для массивов.
         
    call AOut
    call AOutput

    call Dout
    call AOutput

    mov SI, offset Dest     ;массив - приемник
    mov CX, 4         ;счетчик циклов 4 цикла

AGAIN:
     mov AL, ES:[BX+10]     ;явное указание индексаторов на сегмент ES(т.к. по умолчанию DS:[BX])
     cmp AL, 0     ;
    
     jle E         ;если равен 0 ,то переход на метку е
     add AL,5        ;если не равно то прибавляем 5
    E: mov [DI],AL        ;число из акк. в массив-приемник по адресу из di

    inc BX ;увеличение адресов текущих элементов в массивах
    inc DI

loop AGAIN ; конец цикла
        
    call DOutput    

ret ;выход из процедуры
Entry endp ;конец процедуры

;///////////////////////////////////////////////////////////////////////////////
AIn proc

mov AH,9h
mov DX, offset IAMessage
int 21h
ret
AIn endp

;////////////////////////////////////////------------------------------------------
AOut proc

mov AH,9h
mov DX, offset OAMessage
int 21h
ret
AOut endp
;----------------------------------------
DOut proc

mov AH,9h
mov DX, offset ODMessage
int 21h
ret
DOut endp
;/////////////////////////////////////////////////////////////////////////////////
AInput proc
    sub AL,AL
    mov CX,4
M:
    mov AH,01h
int 21h
mov ES:[BX],AL
inc BX
Loop M
    ret
AInput endp    
;///////////////////////////////////////////////////////////////////////////////////
AOutput proc
    mov CX, 4 ;    
    mov BX,0000h ;
P:    
    mov AH, 2h ; Функция вывода ДОС символа на экран
    mov DL, ES:[DI] ;Записываем в регистр вывода символ из массива Dest
    inc SI ; Увеличение счетчика элементов массива
    int 21h ;Вызываем прерывание которому принадлежит функция    

Loop P
    ret
AOutput endp
;-----------------------------------------
DOutput proc
    mov CX, 4 ;    
    mov DI,0008h ;
S:    
    mov AH, 2h ; Функция вывода ДОС символа на экран
    mov DL, ES:[DI] ;Записываем в регистр вывода символ из массива Dest
    inc SI ; Увеличение счетчика элементов массива
    int 21h ;Вызываем прерывание которому принадлежит функция    

Loop S
    ret
DOutput endp
;-----------------------------------------------------------------------------
cseg ends ; 
end Entry ;Exit from procedure
;-------------------------------------------// End //-------------------------
Автор: Abs62
Дата сообщения: 30.05.2010 22:06
KuPbI4

Цитата:
mov AL, ES:[BX+10] ;явное указание индексаторов на сегмент ES(т.к. по умолчанию DS:[BX])

Почему [BX+10]? Откуда +10?

Цитата:
jle E ;если равен 0 ,то переход на метку е

je E

Цитата:
E: mov [DI],AL ;число из акк. в массив-приемник по адресу из di

1. Нет явного указания префикса сегмента.
2. Что в DI, если адрес приёмника был занесён в SI?

Цитата:
mov DI,0008h ;

Почему число, а не offset?

Цитата:
mov DL, ES:[DI] ;Записываем в регистр вывода символ из массива Dest
inc SI ; Увеличение счетчика элементов массива

Не тот регистр инкрементируется.

И не стоит забывать, что 0 и '0' - это не одно и то же.
Автор: KuPbI4
Дата сообщения: 30.05.2010 22:18
Abs62

Цитата:
Цитата: mov AL, ES:[BX+10] ;явное указание индексаторов на сегмент ES(т.к. по умолчанию DS:[BX])

Цитата: je E

Почему [BX+10]? Откуда +10?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384

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


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