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

» Assembler

Автор: MERCURY127
Дата сообщения: 29.09.2011 19:50
или сразу в клуб [высокооплачиваемых] телепатов...
Автор: KChernov
Дата сообщения: 29.09.2011 21:50
Volk870707

Цитата:
DMA - контроллер, как микросхема. Его назначение. Производительность ПК....

Тут явно пропущено самое главное - само условие задачи.
Автор: akaGM
Дата сообщения: 29.09.2011 23:27
а по-моему, условие приведено в самом низу, вплоть до желания получить от нас
Цитата:
графического приложения в виде схемотехнического и конструкторско-технологического материала
Автор: KChernov
Дата сообщения: 30.09.2011 06:08
akaGM
Это скорее рамки выполнения задания.
А самого задания я там не вижу.
Ну разве что DMA - не то, что мы тут все подумали, а какая-то другая вполнеконкретная хрень...
Автор: Qraizer
Дата сообщения: 30.09.2011 06:18
И вы так спокойно об этом рассуждаете? Пришёл халявщик, не говоря ни слова, швырнул листок с заданием вам на стол, удобно устроился в кресле, закинув ногу за ногу, и затягиваясь пивком, слушает ваши речи. Не дай бог ещё кто-то ему поможет - возьмёт решение, по-английски уйдёт, спокойненько сдаст преподу и потащится в клуб к тёлкам рассказывать, какой он крутой IT-шник будет, когда диплом получит.

P.S. Ненавижу. Хай идёт учиться сапоги чистить и лопатой махать, всё больше пользы реальным студентам, народу и партии. Бо обезьяны с корками достали уже Россию перед Европой позорить.
Автор: KChernov
Дата сообщения: 30.09.2011 08:25
Qraizer
Вы меня тут все смущаете - ну нету там условия задачи в принципе - и поэтому никто ему не поможет!
А у меня лично сложилось впечатление, что мы тут дружно стебёмся (мизерную надежду, что написанное нами сподвигнет на выдачу нормальной формулировки, я бы в расчёт принимать не стал).

А люди, помогающие подобным халявщикам, почему-то таки изредка появляются - вон в теме по маплу уже несколько задач одной халявщице нарешали (причём она в начале даже по-русски не соизволила писать). И такое ощущение, что просто сидели и ждали, ну когда же придёт он - великий халявщик:
Цитата:
На сегодня все, устал

Цитата:
Всегда готов помочь

Можно попытаться выяснить ответ на этот вопрос, заведя тему Почему вы помогаете халявщикам?
Только вот боюсь зафлудят.
Автор: akaGM
Дата сообщения: 30.09.2011 14:51

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

я здесь уже неоднократно разоблачал таких "девушек"...
для таких халявщиков главное с окончанием глаголов не напутать...


Цитата:
заведя тему... Только вот боюсь зафлудят.

у нас и так есть своя флудильня...
Автор: rrromano
Дата сообщения: 03.10.2011 09:35
Та достаточно не давать готовых решений халявщикам, а подсказки/материал для размышлений/сырые заготовки. Понимающему достаточно, а халявщику не подойдёт. Аминь.
Автор: Vostrikovskiy
Дата сообщения: 05.10.2011 13:47
может ветку под x64 отдельно выделить?
Автор: MERCURY127
Дата сообщения: 05.10.2011 14:32
а что, тут кто то озадачился проблемой х64? как было 100 лет назад на тасме, так и пишут там же, под ДОС... а те кто пишет под х64 на асме - сюда не ходят...
Автор: Vostrikovskiy
Дата сообщения: 06.10.2011 13:00

Цитата:
а те кто пишет под х64 на асме - сюда не ходят...

И куда они ходят?
Автор: ItsJustMe
Дата сообщения: 06.10.2011 19:54
Никуда они не ходят. Они сами по себе достаточно сообразительны, чтобы ходить и задавать глупые вопросы
Автор: rrromano
Дата сообщения: 13.10.2011 09:33

Цитата:
Никуда они не ходят. Они сами по себе достаточно сообразительны, чтобы ходить и задавать глупые вопросы


Ну почему же. При любом уровне сообразительности и профессионализма всегда есть вопросы для обсуждения )
Автор: Vostrikovskiy
Дата сообщения: 15.10.2011 20:22
ItsJustMe

Цитата:
Они сами по себе достаточно сообразительны, чтобы ходить и задавать глупые вопросы

Например, какие?
Автор: ItsJustMe
Дата сообщения: 16.10.2011 18:53
Откуда ж я знаю? Тут пока ни один не появлялся, поэтому и никаких вопросов задано не было. Отсюда, собственно, и мой вывод
Вот когда появится кто-то и вопрос задаст (причем, глупый), вот тогда я и смогу ответить на ваш вопрос.
Автор: G36
Дата сообщения: 17.10.2011 20:36
Господа, в 32-битном TASM использовать прерывания нельзя, верно? Как же тогда вводить и выводить информацию? Неужели только через WinAPI? И еще, следующую программу

Код: .486
.model flat

includelib ..\Lib\imp32i.lib

extrn ExitProcess:PROC
extrn MessageBoxA:PROC

.data

Ttl db "First ASSEMBLER program",0h
Msg db 'Hello, World',0h

.code

start:
push 0h
push offset Msg
push offset Ttl
push 0h
call MessageBoxA
push 0h
call ExitProcess
end start
Автор: rrromano
Дата сообщения: 18.10.2011 17:28
G36
Вы консольное приложение, или оконное хотите?
На _wasm.ru не заходили ещё?
Автор: G36
Дата сообщения: 18.10.2011 18:25
rrromano
Консольное, на wasmе был не раз, проблему свою гуглил целый вечер, но Turbo Debugger упорно не видит символьную таблицу, при компиляции с вышеуказанными ключами никаких tds-файлов не создается, а должны бы.
Tasm32 версии 5.3, TD32 версии 5.5.
Автор: rrromano
Дата сообщения: 19.10.2011 09:39
G36


Код: .386P
; плоская модель
.MODEL FLAT, stdcall

; константы
STD_OUTPUT_HANDLE equ -11

; прототипы внешних процедур
EXTERN GetStdHandle:NEAR
EXTERN WriteConsoleA:NEAR
EXTERN ExitProcess:NEAR

; директивы компоновщику для подключения библиотек
includelib c:\tasm32\lib\import32.lib

;------------------------------------------------------------
; сегмент данных
_DATA SEGMENT DWORD PUBLIC USE32 'DATA'
; строка в DOS-овской кодировке
STR1 DB "Консольное приложение",0
LENS DD ?
; количество выведенных символов
RES DD ?
_DATA ENDS

; сегмент кода
_TEXT SEGMENT DWORD PUBLIC USE32 'CODE'
START:
; получить HANDLE вывода
PUSH STD_OUTPUT_HANDLE
CALL GetStdHandle
; длина строки
PUSH OFFSET STR1
CALL LENSTR
; вывести строку
PUSH OFFSET RES ; резерв
PUSH OFFSET LENS ; выведено символов
PUSH EBX ; длина строки
PUSH OFFSET STR1 ; адрес строки
PUSH EAX ; HANDLE вывода
CALL WriteConsoleA
PUSH 0
CALL ExitProcess
; строка - [EBP+08H]
; длина в EBX

LENSTR PROC
PUSH EBP
MOV EBP,ESP
PUSH EAX
; ----------
CLD
MOV EDI, DWORD PTR [EBP+08H]
MOV EBX,EDI
MOV ECX,100 ; ограничить длину строки
XOR AL,AL
REPNE SCASB ; найти символ 0
SUB EDI, EBX ; длина строки, включая 0
MOV EBX,EDI
DEC EBX
; ----------
POP EAX
POP EBP
RET 4
LENSTR ENDP
_TEXT ENDS
END START
Автор: MERCURY127
Дата сообщения: 19.10.2011 11:43
G36
[more=код]
.386
.model        flat,STDCALL
includelib     import32.lib

STD_OUTPUT_HANDLE equ -11

; Define the external functions we will be linking to
extrn         _wsprintfA:PROC
extrn        GetStdHandle:PROC
extrn        WriteConsoleA:PROC
extrn        ExitProcess:PROC

.data
stdhnd        dd 0
resrvd        dd 0
outlen        dd 0
buffer        db 1024 dup (0)
wsplen        dd 0
msgstr        db 'My first Win32 console assembler application!',13,10,0
msgstr_l    equ ($-offset msgstr)-1
fmtstr        db 'It is just print this number: %d and exit.',13,10,0
fmtstr_l    equ ($-offset fmtstr)-1
number        dd 20111019

.code
;-----------------------------------------------------------------------------
;
; This is where control is received from the loader.
;
start:

    push     STD_OUTPUT_HANDLE
    CALL    GetStdHandle
    mov    stdhnd, eax

    push     offset resrvd
    push    offset outlen
    push    offset msgstr_l
    push offset msgstr
    push     stdhnd
    call    WriteConsoleA

    push    number
    push    offset fmtstr
    push    offset buffer
    call    _wsprintfA
    add    esp, 3*4 ; push * sizeof DWORD
    mov    wsplen, eax
    
    push     offset resrvd
    push    offset outlen
    push    wsplen
    push offset buffer
    push     stdhnd
    call    WriteConsoleA

    push    0
call ExitProcess

ends
end start
[/more]
[more=батник]
del /y test.exe test.map test.obj
tasm32 /ml /zi test.asm
tlink32 /ap /m /s /v test.obj
td32 test.exe
[/more]
Автор: rrromano
Дата сообщения: 19.10.2011 12:01
MERCURY127
Тоже вариант, но для новичка сложнее в понимании, как мне кажется ).
Автор: MERCURY127
Дата сообщения: 19.10.2011 12:42
Еще можно было бы lstrlen задействовать но мне тоже показалось, что будет перебор. Однако мне кажется, он не совсем новичок, а в винде вывод в консоль не сложнее, чем в дос. Еще с версии 2.0 это там есть, вроде. И х64 тоже умеет это. А еще в масме можно msvcrt.lib подключить.
Автор: G36
Дата сообщения: 19.10.2011 17:46
rrromano
По-прежнему переработанные машинные инструкции вместо исходного кода.
MERCURY127
Отлично работает, спасибо!
Опытным путем выяснилось, что в коде должен быть объявлен массив buffer размером хотя бы 512 байт, но не совсем понятно, как программа будет его использовать (вместо стека что ли?).
Автор: MERCURY127
Дата сообщения: 19.10.2011 20:34
Значит, все таки новичок буфер этот должен быть минимум 1024 или по некоторым данным даже не менее 2050 байт. В него пишет вывод функция вспринтф, использованная для печати числа - аналог принтф в си. Если форматированный вывод не нужен - не используйте ее, и буфер не нужен будет.

Добавлено:
И вообще, если уж начали писать для винды - не занимайтесь телепатией, а читайте МСДН/ПСДК/ВДК/ВРК документацию...
Автор: G36
Дата сообщения: 19.10.2011 21:47

Цитата:
Если форматированный вывод не нужен - не используйте ее, и буфер не нужен будет

Да, я видел, что один из параметров функции - буфер, но мне сначала хотелось этого:

И если теперь из исходника убрать буфер, то получается:
Автор: MERCURY127
Дата сообщения: 20.10.2011 11:49
а тасм разве умеет .686 и .ммх???
Автор: MERCURY127
Дата сообщения: 20.10.2011 14:11
а, таки умеет ... 5.3 уже есть ну так в чем проблема то? все как надо:
[more=картинка] [/more]

Добавлено:
а... если буфер убрать... хмм, тогда да, не распознает как дебагинфо... думаю что глюк отладчика странно ждать чудес от трупа...
Автор: G36
Дата сообщения: 20.10.2011 14:51

Цитата:
странно ждать чудес от трупа

А что есть такое же удобное для отладки в наше время? Даже OllyDbg не умеет отображать исходники.
Автор: MERCURY127
Дата сообщения: 20.10.2011 16:02
windbg, softice

Добавлено:
нашел проблему минимальный размер секции данных (те всех db dw dd dq) для норм отладки должен быть более 512 байт

Добавлено:
вот такие пироги...
Автор: bomzzz
Дата сообщения: 20.10.2011 22:42



как правильно переопределить все диски, ни фига из описания не ясно. что в DL
запихать?

80h означает что только первый диск сбросится или все жесткие диски?
а 80h+1000000B=С0h означает что все диски сбросятся и жесткие и мягкие или по другому надо?
то есть это все таки номер дисковода или происходит сброс контроллера и соответсвенно всех жестких-мягких дисков?

Добавлено:
DL -номер дисковода - может кулаков погорячился?


Цитата:
mov dl, 80h
mov ah, 0
int 13h

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384

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


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