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

» Assembler

Автор: redwhiterus
Дата сообщения: 07.06.2008 21:38
Ассемблер - книги (ASM, Assembler)
Автор: SERGE_BLIZNUK
Дата сообщения: 08.06.2008 16:43
akaGM
redwhiterus
Насколько я понимаю, нужды в публикации ссылок на книжки уже нет?...
Или всё таки поместить ссылочки в шапку?...
Автор: akaGM
Дата сообщения: 08.06.2008 17:22
я считаю, что продублировать в шапке стоит...
Автор: redwhiterus
Дата сообщения: 08.06.2008 20:04

Цитата:
Насколько я понимаю, нужды в публикации ссылок на книжки уже нет?...
Или всё таки поместить ссылочки в шапку?...

Согласен, стоит поместить, только если много под more имхо лучше..
Автор: CoHuK
Дата сообщения: 09.06.2008 11:36
Всем привет.
помогите с задачей пожалуйста...
програма использует прерывание 1с и бежит скажем 5 минут. Прога проверяет за каждый "тик" регистры AX, BX, CX, DX. Нужно проверить в регистрах каждый бит по отдельности и записывать общее количество в массив из 64 слов (слово для каждого бита по отдельности), например в AX занесено число 0111010001110011, значит счетчик в массиве для каждого бита "1" увели4ится на 1) . После 5-ти минут нужно вывести на экран какой процент каждый бит был 1 от обшего числа "тиков".
Автор: panda2019
Дата сообщения: 10.06.2008 10:51
привет.
мне тут знакомому помощь нужна.
я ассемблер вообще не знаю, а он у него нет возможности долго в нете быть
задание:
Ввести строку символьных данных, задавая буфер равный 18 баит.
разделить цепочку на две равные- 9байт каждая. выдавая на экран эти части одна под другой начиная с 10 строки 35 столбца. вначале вторую строку, потом первую.
посмотрите пожалуйста, что можно сделать.
Автор: sadomasya
Дата сообщения: 17.06.2008 20:08
напишите программу: найти дружественные числа m и n (m равен сумме делителей n, n равен сумме делителей m)
Автор: rimkarimka
Дата сообщения: 20.06.2008 19:19
Помогите в Ассемблерe написать программу, пожалуйста.
Дана строчка из 9 симболов,на клавиатуре пишется номер симбола из этой строчки.Второй на клавиатуре пишется цифра показывает сколько раз повторять симбол в строчке.На экране печатается 30 строчек этого симбола в каждой строчке его повторяя столъко раз сколько указал ползователь вводя вторую цифру.
Автор: KciNKh
Дата сообщения: 20.06.2008 20:21

Цитата:
rimkarimka : Помогите в Ассемблерe написать программу, пожалуйста

где-то так
[more]

Код: title strings
.model small
;===========================================================
; Author: Khokhlov Nickolay, Soft KciNKh (c)
; Module: strings
; Description:
; Creation date: 20.06.2008 19:45:41
; Remarks:
;===========================================================
.stack 100h

.data
hello db 'Helloworl'
entr db 10, 13, '$'

symb db ?
count db ?

.code
main proc
mov ax, @data
mov ds, ax

m1:
mov ah, 1
int 21h
cmp al, '0' ; Error Input data
jl m1
cmp al, '9'
jg m1 ; Error Input data

; Ok Input - number symbol
sub al, 30h
mov symb,al

m2:
mov ah, 1
int 21h
cmp al, '0' ; Error Input data
jl m2
cmp al, '9'
jg m2 ; Error Input data

; Ok Input - count symbols
sub al, 30h
mov byte ptr count,al

mov cx, 30
l0:
push cx
mov bx, offset hello
xor ax, ax
mov al, symb
add bx, ax
mov dl, byte ptr [bx]
xor cx, cx
mov cl, byte ptr count
l1:
mov ah, 02h
int 21h
loop l1
mov ah, 09h
lea dx, entr
int 21h
pop cx
loop l0

exit:
mov ax, 4c00h
int 21h
main endp

end main
Автор: rimkarimka
Дата сообщения: 21.06.2008 13:33
Спасибо тебе огромное,добрый человек !!!
Автор: hobin
Дата сообщения: 27.07.2008 10:01
Здравствуйте. Огоромная просьба, мучаюсь с прогой упровления ЖК-индикатора. PC1604
делаю вроде всё провильно. Может у кого есть уже написанная в ассемблере. Ну очень надо!
Автор: stupid_user
Дата сообщения: 08.09.2008 13:44
гуру asm подскажите что это за тип вызова функции? (хочу переделать в читабельный вид)

function Get(a, b, c: integer): Integer; virtual;
begin
asm
push [ebp+16]
push [ebp+12]
push [ebp+8]
call Func2
add esp, 12
pop ebp
ret 12
end;
end;
Автор: akaGM
Дата сообщения: 08.09.2008 14:07
stupid_user


Цитата:
хочу переделать в читабельный вид

то есть?

push [ebp+16]
push [ebp+12]
push [ebp+8]
call Func2
add esp, 12
pop ebp

пихается в стек a b c и зовётся func2, потом после её вызова чистится стек 3 * 4 int'а
из чего можно заключить, что func2 -- C-функция, потом чистится стек самой Get

или что ты хотел?

-----
а, вот это что ли?

function Агтс2(a, b, c: integer): Integer; cdecl;
Автор: stupid_user
Дата сообщения: 08.09.2008 14:25
akaGM
я бы хотел чтобы вместо asm кода было нечто:
result := Func2(a, b, c);

Но такой способ не работает (Func2 вызывается, но параметры не передаются), работает только asm код. Я так понял, что нужно указать тип вызова (cdecl, stdcall, safecall и т.п.)

upd:
Func2 у меня уже стоит function Func2 (a,b,c : integer): integer; cdecl;
Но при вызове из Get ;virtual параметры не передаются.
Автор: akaGM
Дата сообщения: 08.09.2008 14:45
stupid_user
что значит не передаются?

ну отcчёт стека в виртуале, афаир, начинается со сдвига на "лишние" 4 байта из-за передачи self

попробуй так:
Код:
function Get(a, b, c: integer): Integer; virtual;
var
res: integer;
begin
res := Func2(a,b,c);
Result := res;
end;
Автор: Skipper
Дата сообщения: 21.09.2008 13:02
Подскажите, как вывести результат, после использования fsin? т.е. из регистра st(0)
Автор: Lyrik
Дата сообщения: 21.09.2008 16:37
Skipper

Код: fstp dword ptr [a]
Автор: Skipper
Дата сообщения: 21.09.2008 20:17
Немного не так вопрос задал, как его на экран можно вывести?
Автор: AlexeyTr
Дата сообщения: 16.10.2008 16:15
Возможно ли выразить бинарное AND операциями в десятичной системе (деление, учножение, сложение...) ?
Автор: Ve4eslav
Дата сообщения: 22.10.2008 20:05
Господа, требуется до конца выходных заделать лабу по AVR

Разработать программу, отображающую содержимое флеш-памяти на светодиодных индикаторах по 3 бита на один раз. Переход к отображению следующих 3 бит должен происходить при нажатии кнопки. Кнопка 1 показывает следующие 3 бита, кнопка 2 – предыдущие. Если ни одна из кнопок не нажата в течение 10с мигать всеми индикаторами с частотой 3 Гц до нажатия.

Цена договорная аська 1семь69четыре4ноль2один

Инструкции по запросу вышлю. Желательно чтоб беспокоил любитель сего вида микроконтроллеров, ибо в общем и целом asm-код я и сам напишу, но вот с этим конкретным процессором хочется чтоб он удовлетворял условиям корректности данных тестирования.

Доп требования (для тех кто уже в теме): Таймер должен быть в синхронном режиме, при этом должны использоваться прерывания.
Автор: Kolbaser_Mx
Дата сообщения: 24.10.2008 18:42
Здравствуйте, наконец-то нашел толковый форум про ассемблер! вообщем нужна помощь- немного подправить исходник, сам я в этом слабовать Нужно написать прогу, определяющую размер доступной для DOS оперативной памяти в КБ (обычно она вроде что-то около 650КБ). Есть такой исходник, но он не компилится в emm8086.exe( удобная прога для начинающих)

[more]

Код:
.model tiny
.code
.386
org 100h
start:
mov ah,9
mov dx,offset pr
int 21h
mov al,015h
out 070h,al
in al,071h
mov bl,al
mov al,016h
out 070h,al
in al,071h
mov bh,al
mov ax,bx
mov bx,10
xor di,di
l1:
xor dx,dx
div bx
add dl,030h
dec di
mov buf_end[di],dl
cmp ax,00h
jnz l1
lea dx,buf_end[di]
mov ah,09h
int 21h
mov ah,9
mov dx,offset pr2
int 21h
mov al,017h
out 070h,al
in al,071h
mov bl,al
mov al,018h
out 070h,al
in al,071h
mov bh,al
mov ax,bx
mov bx,10
xor di,di
l2:
xor dx,dx
div bx
add dl,030h
dec di
mov buf_end[di],dl
cmp ax,00h
jnz l2
lea dx,buf_end[di]
mov ah,09h
int 21h
int 20h
ret
buf db 16 dup (?)
buf_end db'$'
pr db 'Razmer bazovoi pamati: ','$'
pr2 db ' bait,razmer rasshirenoi pamati: ','$'
pr3 db ' bait','$'
end start
Автор: akaGM
Дата сообщения: 24.10.2008 19:41
Kolbaser_Mx

Цитата:
но он не компилится

чем не компилится? код вполне себе честный,
tasm и masm едят его на ура...
а в чистый дос загрузиться?

может быть ты просто .com формат не можешь сделать этой фигней emm8086?
кстати, что это, эмулятор, emm/xmm?
Автор: Kolbaser_Mx
Дата сообщения: 26.10.2008 18:32
Теперь попробовал TASM:
tasm 3.1
tlink 5.1

Turbo Assembler выдает
Assembling file: max.asm
Error messages: None
Warning messages: None
Passes: 1
Remaining memory: 417k

Turbo link пишет:
Warning: No stack

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

...................(НАБОР РАЗНЫХ НЕПЕЧАТУЕМЫХ СИМВОЛОВ) ..................................... 640 ..........................................
... . .. .. ..............(ЕЩЕ НАБОР) ....................................... . .. . .1024 .........................................



Также вылазит ошибка Процессор NTVDM обнаружил недопустимую инструкцию
CS: 0000 IP:0077 OP:f0 37 05 12 02. Для завершения приложения нажмите кнопку Закрыть.


P/s/ emm8086 - www.emu8086.com.
emu8086 is the emulator of 8086 (Intel and AMD compatible) microprocessor with integrated 8086 assembler and tutorials for beginners. The emulator runs programs like the real microprocessor in step-by-step mode. It shows registers, memory, stack, variables and flags
P/p/s в чистом ДОСе - те же кракозябы...
Автор: Abs62
Дата сообщения: 26.10.2008 18:59
Kolbaser_Mx

Цитата:
но что делать с этим "шумом" из букв?

Запускать tlink с ключом /t, дабы получился com, а не exe.
Автор: Kolbaser_Mx
Дата сообщения: 26.10.2008 19:24
Abs62

Цитата:
Запускать tlink с ключом /t, дабы получился com, а не exe.

ВСЕ ЗАРАБОТАЛО!!!!!! Я СЧАСТЛИВ!
большое спасибо за быстрый ответ!
Осталось совсем немного - не могли бы вы закоментить исходник немного чтобы было понятно что делается по ходу ее выполнения- а то честно говоря мне немного помогли ее сделать ) а прокоментировать забыли ...

Автор: akaGM
Дата сообщения: 27.10.2008 14:26
Kolbaser_Mx
блин, читать надо было внимательнее:

Цитата:
может быть ты просто .com формат не можешь сделать...?

или это тебе ничего не сказало?

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

Код: ; Kolbaser_Mx
; (C) 2008, All rights reserved
Автор: Kolbaser_Mx
Дата сообщения: 28.10.2008 18:44
akaGM

Цитата:
; Kolbaser_Mx
; (C) 2008, All rights reserved

) а еще лучше commented by akaGM (R) )

Спасибо за проделанную работу! Продавать конечно я не собираюсь - не мой уровень таким заниматься... Все для себя, для любимого.


Цитата:
может быть ты просто .com формат не можешь сделать...?
или это тебе ничего не сказало?


задание было написать exe-шник, поэтому я упорно пытался откомпилить его в exe. Придется доказывать преподу, что .com-программа ничем не хуже .exe ))


Автор: akaGM
Дата сообщения: 28.10.2008 19:51
Kolbaser_Mx

Цитата:
Придется доказывать преподу, что .com-программа ничем не хуже .exe

на тебе [more=ехе-версию]
.model small;;;tiny
;;; .386

.stack ;;;

.code
;;; перенесено снизу
buf db 16 dup (?)
buf_end db'$'
pr db 'Razmer bazovoi pamati: ','$'
pr2 db ' bait,razmer rasshirenoi pamati: ','$'
pr3 db ' bait','$'

.code

assume cs: _TEXT, ds: _TEXT, es: _TEXT ;;;

;;;org 100h
start:

mov ax, cs ;;;
mov ds, ax ;;;
mov es, ax ;;;

mov ah,9
mov dx,offset pr
int 21h
mov al,015h
out 070h,al
in al,071h
mov bl,al
mov al,016h
out 070h,al
in al,071h
mov bh,al
mov ax,bx
mov bx,10
xor di,di
l1:
xor dx,dx
div bx
add dl,030h
dec di
mov buf_end[di],dl
cmp ax,00h
jnz l1
lea dx,buf_end[di]
mov ah,09h
int 21h
mov ah,9
mov dx,offset pr2
int 21h
mov al,017h
out 070h,al
in al,071h
mov bl,al
mov al,018h
out 070h,al
in al,071h
mov bh,al
mov ax,bx
mov bx,10
xor di,di
l2:
xor dx,dx
div bx
add dl,030h
dec di
mov buf_end[di],dl
cmp ax,00h
jnz l2
lea dx,buf_end[di]
mov ah,09h
int 21h

;;;int 20h

mov ax, 4c00h ;;;
int 21h ;;;

;;;ret

end start
[/more]
изменения минимальны, сам разберешься, т.к. я просто закомментировал ненужное/вставленное тремя ;;;

компилировать:
tasm хрен.asm
линковать:
tlink хрен.obj
например...

заранее пожалуйста, хотя от коньяка не откажусь...

---

Цитата:
Razmer bazovoi pamati: 640 bait

гы-гы-гы

низачот!
Автор: Abs62
Дата сообщения: 28.10.2008 20:27
akaGM
Будь я преподавателем, я бы обязательно поинтересовался, зачем пихать данные в сегмент кода.
Автор: akaGM
Дата сообщения: 28.10.2008 22:06
Abs62
а я так сделал?
...
действительно...
да один чёрт, тем более мои знания асма ограничиваются полным и явным описанием сегментов по старинке, я не знаю, что делают директивы (макросы?) .code .data
а ваще ты ничего не понимаешь! это типа для дата-экзекушн заготовка вот
гы

---
слушай, а серьёзно...
там у меня по недосмотру два .code и ничего -- компил/экзек, это как?

также ни фига не понимаю, почему работает мой вариант -- у меня ж там ошибка,
хотел же перепрыгнуть этот блок данных:

jmp start

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384

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


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