» Assembler
akaGM
redwhiterus
Насколько я понимаю, нужды в публикации ссылок на книжки уже нет?...
Или всё таки поместить ссылочки в шапку?...
redwhiterus
Насколько я понимаю, нужды в публикации ссылок на книжки уже нет?...
Или всё таки поместить ссылочки в шапку?...
я считаю, что продублировать в шапке стоит...
Цитата:
Насколько я понимаю, нужды в публикации ссылок на книжки уже нет?...
Или всё таки поместить ссылочки в шапку?...
Согласен, стоит поместить, только если много под more имхо лучше..
Всем привет.
помогите с задачей пожалуйста...
програма использует прерывание 1с и бежит скажем 5 минут. Прога проверяет за каждый "тик" регистры AX, BX, CX, DX. Нужно проверить в регистрах каждый бит по отдельности и записывать общее количество в массив из 64 слов (слово для каждого бита по отдельности), например в AX занесено число 0111010001110011, значит счетчик в массиве для каждого бита "1" увели4ится на 1) . После 5-ти минут нужно вывести на экран какой процент каждый бит был 1 от обшего числа "тиков".
помогите с задачей пожалуйста...
програма использует прерывание 1с и бежит скажем 5 минут. Прога проверяет за каждый "тик" регистры AX, BX, CX, DX. Нужно проверить в регистрах каждый бит по отдельности и записывать общее количество в массив из 64 слов (слово для каждого бита по отдельности), например в AX занесено число 0111010001110011, значит счетчик в массиве для каждого бита "1" увели4ится на 1) . После 5-ти минут нужно вывести на экран какой процент каждый бит был 1 от обшего числа "тиков".
привет.
мне тут знакомому помощь нужна.
я ассемблер вообще не знаю, а он у него нет возможности долго в нете быть
задание:
Ввести строку символьных данных, задавая буфер равный 18 баит.
разделить цепочку на две равные- 9байт каждая. выдавая на экран эти части одна под другой начиная с 10 строки 35 столбца. вначале вторую строку, потом первую.
посмотрите пожалуйста, что можно сделать.
мне тут знакомому помощь нужна.
я ассемблер вообще не знаю, а он у него нет возможности долго в нете быть
задание:
Ввести строку символьных данных, задавая буфер равный 18 баит.
разделить цепочку на две равные- 9байт каждая. выдавая на экран эти части одна под другой начиная с 10 строки 35 столбца. вначале вторую строку, потом первую.
посмотрите пожалуйста, что можно сделать.
напишите программу: найти дружественные числа m и n (m равен сумме делителей n, n равен сумме делителей m)
Помогите в Ассемблерe написать программу, пожалуйста.
Дана строчка из 9 симболов,на клавиатуре пишется номер симбола из этой строчки.Второй на клавиатуре пишется цифра показывает сколько раз повторять симбол в строчке.На экране печатается 30 строчек этого симбола в каждой строчке его повторяя столъко раз сколько указал ползователь вводя вторую цифру.
Дана строчка из 9 симболов,на клавиатуре пишется номер симбола из этой строчки.Второй на клавиатуре пишется цифра показывает сколько раз повторять симбол в строчке.На экране печатается 30 строчек этого симбола в каждой строчке его повторяя столъко раз сколько указал ползователь вводя вторую цифру.
Цитата:
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
Спасибо тебе огромное,добрый человек !!!
Здравствуйте. Огоромная просьба, мучаюсь с прогой упровления ЖК-индикатора. PC1604
делаю вроде всё провильно. Может у кого есть уже написанная в ассемблере. Ну очень надо!
делаю вроде всё провильно. Может у кого есть уже написанная в ассемблере. Ну очень надо!
гуру 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;
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;
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;
Цитата:
хочу переделать в читабельный вид
то есть?
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;
akaGM
я бы хотел чтобы вместо asm кода было нечто:
result := Func2(a, b, c);
Но такой способ не работает (Func2 вызывается, но параметры не передаются), работает только asm код. Я так понял, что нужно указать тип вызова (cdecl, stdcall, safecall и т.п.)
upd:
Func2 у меня уже стоит function Func2 (a,b,c : integer): integer; cdecl;
Но при вызове из Get ;virtual параметры не передаются.
я бы хотел чтобы вместо asm кода было нечто:
result := Func2(a, b, c);
Но такой способ не работает (Func2 вызывается, но параметры не передаются), работает только asm код. Я так понял, что нужно указать тип вызова (cdecl, stdcall, safecall и т.п.)
upd:
Func2 у меня уже стоит function Func2 (a,b,c : integer): integer; cdecl;
Но при вызове из Get ;virtual параметры не передаются.
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;
что значит не передаются?
ну отcчёт стека в виртуале, афаир, начинается со сдвига на "лишние" 4 байта из-за передачи self
попробуй так:
Код:
function Get(a, b, c: integer): Integer; virtual;
var
res: integer;
begin
res := Func2(a,b,c);
Result := res;
end;
Подскажите, как вывести результат, после использования fsin? т.е. из регистра st(0)
Skipper
Код: fstp dword ptr [a]
Код: fstp dword ptr [a]
Немного не так вопрос задал, как его на экран можно вывести?
Возможно ли выразить бинарное AND операциями в десятичной системе (деление, учножение, сложение...) ?
Господа, требуется до конца выходных заделать лабу по AVR
Разработать программу, отображающую содержимое флеш-памяти на светодиодных индикаторах по 3 бита на один раз. Переход к отображению следующих 3 бит должен происходить при нажатии кнопки. Кнопка 1 показывает следующие 3 бита, кнопка 2 – предыдущие. Если ни одна из кнопок не нажата в течение 10с мигать всеми индикаторами с частотой 3 Гц до нажатия.
Цена договорная аська 1семь69четыре4ноль2один
Инструкции по запросу вышлю. Желательно чтоб беспокоил любитель сего вида микроконтроллеров, ибо в общем и целом asm-код я и сам напишу, но вот с этим конкретным процессором хочется чтоб он удовлетворял условиям корректности данных тестирования.
Доп требования (для тех кто уже в теме): Таймер должен быть в синхронном режиме, при этом должны использоваться прерывания.
Разработать программу, отображающую содержимое флеш-памяти на светодиодных индикаторах по 3 бита на один раз. Переход к отображению следующих 3 бит должен происходить при нажатии кнопки. Кнопка 1 показывает следующие 3 бита, кнопка 2 – предыдущие. Если ни одна из кнопок не нажата в течение 10с мигать всеми индикаторами с частотой 3 Гц до нажатия.
Цена договорная аська 1семь69четыре4ноль2один
Инструкции по запросу вышлю. Желательно чтоб беспокоил любитель сего вида микроконтроллеров, ибо в общем и целом asm-код я и сам напишу, но вот с этим конкретным процессором хочется чтоб он удовлетворял условиям корректности данных тестирования.
Доп требования (для тех кто уже в теме): Таймер должен быть в синхронном режиме, при этом должны использоваться прерывания.
Здравствуйте, наконец-то нашел толковый форум про ассемблер! вообщем нужна помощь- немного подправить исходник, сам я в этом слабовать Нужно написать прогу, определяющую размер доступной для 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
[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
Kolbaser_Mx
Цитата:
чем не компилится? код вполне себе честный,
tasm и masm едят его на ура...
а в чистый дос загрузиться?
может быть ты просто .com формат не можешь сделать этой фигней emm8086?
кстати, что это, эмулятор, emm/xmm?
Цитата:
но он не компилится
чем не компилится? код вполне себе честный,
tasm и masm едят его на ура...
а в чистый дос загрузиться?
может быть ты просто .com формат не можешь сделать этой фигней emm8086?
кстати, что это, эмулятор, emm/xmm?
Теперь попробовал 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 в чистом ДОСе - те же кракозябы...
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 в чистом ДОСе - те же кракозябы...
Kolbaser_Mx
Цитата:
Запускать tlink с ключом /t, дабы получился com, а не exe.
Цитата:
но что делать с этим "шумом" из букв?
Запускать tlink с ключом /t, дабы получился com, а не exe.
Abs62
Цитата:
ВСЕ ЗАРАБОТАЛО!!!!!! Я СЧАСТЛИВ!
большое спасибо за быстрый ответ!
Осталось совсем немного - не могли бы вы закоментить исходник немного чтобы было понятно что делается по ходу ее выполнения- а то честно говоря мне немного помогли ее сделать ) а прокоментировать забыли ...
Цитата:
Запускать tlink с ключом /t, дабы получился com, а не exe.
ВСЕ ЗАРАБОТАЛО!!!!!! Я СЧАСТЛИВ!
большое спасибо за быстрый ответ!
Осталось совсем немного - не могли бы вы закоментить исходник немного чтобы было понятно что делается по ходу ее выполнения- а то честно говоря мне немного помогли ее сделать ) а прокоментировать забыли ...
Kolbaser_Mx
блин, читать надо было внимательнее:
Цитата:
или это тебе ничего не сказало?
а с комментариями -- нет уж, парень, извини, -- один тебе код написал, другой откомментировал, а ты это сдавать/продавать будешь? асм не такая штука, чтоб его в ботаническом институте учили, так что давай, учи...
правда, один коммент посоветовать могу
в первых двух строчках напиши:
Код: ; Kolbaser_Mx
; (C) 2008, All rights reserved
блин, читать надо было внимательнее:
Цитата:
может быть ты просто .com формат не можешь сделать...?
или это тебе ничего не сказало?
а с комментариями -- нет уж, парень, извини, -- один тебе код написал, другой откомментировал, а ты это сдавать/продавать будешь? асм не такая штука, чтоб его в ботаническом институте учили, так что давай, учи...
правда, один коммент посоветовать могу
в первых двух строчках напиши:
Код: ; Kolbaser_Mx
; (C) 2008, All rights reserved
akaGM
Цитата:
) а еще лучше commented by akaGM (R) )
Спасибо за проделанную работу! Продавать конечно я не собираюсь - не мой уровень таким заниматься... Все для себя, для любимого.
Цитата:
задание было написать exe-шник, поэтому я упорно пытался откомпилить его в exe. Придется доказывать преподу, что .com-программа ничем не хуже .exe ))
Цитата:
; Kolbaser_Mx
; (C) 2008, All rights reserved
) а еще лучше commented by akaGM (R) )
Спасибо за проделанную работу! Продавать конечно я не собираюсь - не мой уровень таким заниматься... Все для себя, для любимого.
Цитата:
может быть ты просто .com формат не можешь сделать...?
или это тебе ничего не сказало?
задание было написать exe-шник, поэтому я упорно пытался откомпилить его в exe. Придется доказывать преподу, что .com-программа ничем не хуже .exe ))
Kolbaser_Mx
Цитата:
на тебе [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
например...
заранее пожалуйста, хотя от коньяка не откажусь...
---
Цитата:
гы-гы-гы
низачот!
Цитата:
Придется доказывать преподу, что .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
гы-гы-гы
низачот!
akaGM
Будь я преподавателем, я бы обязательно поинтересовался, зачем пихать данные в сегмент кода.
Будь я преподавателем, я бы обязательно поинтересовался, зачем пихать данные в сегмент кода.
Abs62
а я так сделал?
...
действительно...
да один чёрт, тем более мои знания асма ограничиваются полным и явным описанием сегментов по старинке, я не знаю, что делают директивы (макросы?) .code .data
а ваще ты ничего не понимаешь! это типа для дата-экзекушн заготовка вот
гы
---
слушай, а серьёзно...
там у меня по недосмотру два .code и ничего -- компил/экзек, это как?
также ни фига не понимаю, почему работает мой вариант -- у меня ж там ошибка,
хотел же перепрыгнуть этот блок данных:
jmp start
а я так сделал?
...
действительно...
да один чёрт, тем более мои знания асма ограничиваются полным и явным описанием сегментов по старинке, я не знаю, что делают директивы (макросы?) .code .data
а ваще ты ничего не понимаешь! это типа для дата-экзекушн заготовка вот
гы
---
слушай, а серьёзно...
там у меня по недосмотру два .code и ничего -- компил/экзек, это как?
также ни фига не понимаю, почему работает мой вариант -- у меня ж там ошибка,
хотел же перепрыгнуть этот блок данных:
jmp start
Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
Предыдущая тема: .NET GUI компоненты
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.