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

» Assembler

Автор: bomzzz
Дата сообщения: 20.10.2009 02:35
AX=0000 BX=0000 CX=C2C4 DX=0101 SP=FFEE BP=0000 SI=0000 DI=0000
DS=13A0 ES=13A0 SS=13A0 CS=13A0 IP=0106 NV UP DI NG NZ AC PO NC

не уверен что правильно сделал - не пользовался раньше дебугером. 160 гб
но в ax вроде кода ошибки нету
http://forum.sources.ru/index.php?showtopic=214452

Как работать с большими (>30gb) дисками через int 13 в досе
http://forum.codenet.ru/archive/index.php/t-2570.html
Автор: SeverniyOLEN
Дата сообщения: 20.10.2009 12:28
эмс, а ничё если я так бесцеремонно буду брать ваши коды?
Автор: bomzzz
Дата сообщения: 20.10.2009 13:53
так вот ты какой северный олень
Автор: kraps
Дата сообщения: 20.10.2009 19:19
ну, надеюсь сюда
господа, нет ли у кого-нибудь примеров программ (точнее самого кода), желательно не очень сложных (если с комментами, то вообще отлично) под ARM9 на Assembler'e?
Автор: RoniGT
Дата сообщения: 02.11.2009 14:36
Здравствуйте!!! Не могли бы вы пожалуйста помочь!!! Дали курсовой сказали написать на 2-ух языках его, ассемблер и любой другой... Так вот 2-ым выбрал Паскаль написал на нем программу, а вот с ассемблером не сталкивался =( Помогите люди добрые......
Собственно сама задачка: Дан массив действительных чисел, размерность которого N. Подсчитать количество отрицательных, положительных, нулевых элементов.
Листинг в паскале такой:
[more]uses crt;
var a:array[1..50]of real;
n,i,kp,ko,kn:integer;
begin
clrscr;
write('n=');readln(n);
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
writeln;
kp:=0;ko:=0;kn:=0;
for i:=1 to n do
begin
if a[i]>0 then kp:=kp+1 //считаем положительные
else if a[i]<0 then ko:=ko+1//отрицательные
else if a[i]=0 then kn:=kn+1; //нулевые
end;
writeln;
write('kol pol=',kp,' kol otr=',ko,' kol nul=',kn);
readln
end
[/more]
Автор: Lyrik
Дата сообщения: 02.11.2009 15:52
RoniGT
Ввод и вывод массивов поищите в нете или же в этой теме, должно быть. А сам алгорити можно решить
[more=так]
Код: .586
data segment
    x dd 10.4, -4.5, 0.24, 5.46, -9.335, 13.345, 0.0, -12.35, 0.534, 0.0, 5.345, 6.9, 9.0
    n dw ($-x)/4
    count_zero dw 0
    count_neg dw 0
    count_pos dw 0
data ends

code segment use16
    assume cs:code,ds:data
count_arr proc
; bx - адрес 1го элемента массива
; cx - кол-во элементов
    xor si,si
    finit
    fldz
@main_loop:
    fcom dword ptr bx[si]
    fstsw ax
    sahf
    jnz @cmp_neg
    inc word ptr [count_zero]
    jmp short @continue
@cmp_neg:
    jc @pos_num
    inc word ptr [count_neg]
    jmp short @continue
@pos_num:
    inc word ptr [count_pos]
@continue:
    add si, 4
loop @main_loop
    retn
count_arr endp
start:
    mov ax,data
    mov ds,ax
    lea bx, x
    mov cx, n
    call count_arr
    mov ax, 4c00h
    int 21h
code ends
end start
Автор: akaGM
Дата сообщения: 02.11.2009 16:00
Lyrik
там плавающая точка...

Цитата:
Дан массив действительных чисел
Автор: RoniGT
Дата сообщения: 04.11.2009 03:36
Огромное спасибо всем кто откликнулся и помог!!!! =)))
Еще бы хотел попросить, если не трудно хотя бы в кратких объяснить что написано в коде!!!
Автор: Dhaighal
Дата сообщения: 05.11.2009 21:13
Люди! Спасайте задали задачку решить систему уравнений
http://pic.ipicture.ru/uploads/091106/6Nxiuejlvs.jpg
на ассемблере для микроконтроллеров PIC (вот ужас-то!)
Ничего в нем не соображаю... Спасите!!!
Автор: temir4eg
Дата сообщения: 06.11.2009 01:51
Всем доброго времени суток)

Нужно написать программу,которая бы определяла вводимый с клавиатуры элемент прогрессии (так же с клавиатуры вводится первый элемент и шаг прогрессии).

Сам код :
my_data segment
    mes1 db 'Enter a (first element) = $'
    mes2 db 'Enter d (step) = $'
    mes3 db 'Enter n (number of element) = $'
    mes4 db 'Result = $'
my_data ends

my_stack segment stack
    dw 100 dup(?)
my_stack ends

my_code segment
    
assume cs:my_code,ss:my_stack,ds:my_data
    extrn write:near
    extrn read:near
start:
    mov ax, my_data
    mov ds,ax    
    
    mov ah,9
    lea dx,mes3
    int 21h
    call read ;ax ;n
    
    mov cx,ax ;n

    mov ah,9
    lea dx,mes2
    int 21h    
call read ;ax ;d
    mul cx ;d*n
    mov cx,ax ;d*n
    mov ah,9
    lea dx,mes1
    int 21h    
call read ;ax ;a
    
    mov bx,2 ;2
    mul bx ;2*a
    add cx,ax ;2*a + d*n
    sub cx,1 ;2*a + d*n - 1

    mov ah,9
    lea dx,mes4
    int 21h    
mov ax,cx
    call write

    mov ah, 4ch
    int 21h
my_code ends
end start

Программа считает элемент...но не верно.\Подскажите пожалуйста,где ошибка?

З.Ы. Думаю что напутал что-то с регистрами.
Автор: Prober
Дата сообщения: 06.11.2009 03:56
temir4eg
Навскидку:
1) Почему формула 2*a+d*n-1, хотя для арифметической прогрессии должно быть a+d*(n-1)?
2) Числа не должны быть слишком большими, чтобы результат помещался в 16-разрядный регистр.
3) Если промежуточный результат пишется в CX, то надо убедиться, что этот регистр не затирается при вызовах INT21 и READ.
Автор: temir4eg
Дата сообщения: 06.11.2009 10:09
Prober

1.Преподаватель сказал вычислять по такой форме.
2.Брались числа 1 (превый элемент),2 (шаг прогрессии) и 6(номер элемента)
3юКак это проверить?
Автор: Prober
Дата сообщения: 06.11.2009 12:11
temir4eg
1. Если считать по правилам арифметики, то в примере из п. 2 будет ответ 11, если по формуле вашего препода - то 13.
Цитата:
Программа считает элемент...но не верно.
А сколько в данном случае должно получиться, чтобы признать результат верным?
2. С такими маленькими числами переполнение не грозит.
3. Для INT21 - перечитать документацию. READ - самописная функция, взять ее исходник и посмотреть. Ну, или загрузить готовую программу в DEBUG и оттрассировать.
Автор: temir4eg
Дата сообщения: 06.11.2009 15:02
Должно получаться 13.
То есть проблема заключается либо в прерывании либо в считывании?
Автор: Prober
Дата сообщения: 06.11.2009 16:02
temir4eg
Скорее всего в READ, 9-ую функцию 21-го прерывания я потестил, CX не сбивается.

Для такой программы серьезный отладчик не нужен, грузи в DEBUG и выполняй пошагово, после каждого шага смотри, что в регистрах. Или исполняемый файл выложи, кто-нибудь посмотрит и поставит диагноз.
Автор: Abs62
Дата сообщения: 06.11.2009 16:27
А сохранить содержимое CX перед вызовом подозрительной функции и восстановить после - проблема?
Автор: akaGM
Дата сообщения: 10.11.2009 17:32
temir4eg
Код:
start:
mov ax, my_data
mov ds,ax

mov ah,9
lea dx,mes3
int 21h
xor eax, eax
call read ;ax ;n
xor ecx, ecx
mov cx,ax ;n

mov ah,9
lea dx,mes2
int 21h
xor eax, eax
call read ;ax ;d
xor edx, edx
mul cx ;d*n
mov cx,ax ;d*n
mov ah,9
lea dx,mes1
int 21h
xor eax, eax
call read ;ax ;a
xor ebx, ebx
xor edx, edx
mov bx,2 ;2
mul bx ;2*a
add cx,ax ;2*a + d*n
sub cx,1 ;2*a + d*n - 1

mov ah,9
lea dx,mes4
int 21h
mov ax,cx
call write

mov ah, 4ch
int 21h
my_code ends
end start
Автор: njne
Дата сообщения: 10.11.2009 21:42
    Дан массив однобайтовых чисел в прямом коде со знаком. Начальный адрес - $120, код последнего элемента -$Е1. Найти среднее арифметическое максимального и минимального положительных чисел и количество положительных чисел.(помогите решить до чеиверга)
Автор: nova2012
Дата сообщения: 12.11.2009 15:11
Всем доброго времени суток!!! Помогите решить задачи на асме плииз:

№1. Ввести с клавиатуры строку символов. Произвести в строке циклический сдвиг на 1 позицию вправо. (Например: “Hubba-Bubba” --> “aHubba-Bubb”). Результат вывести на экран.
№2. В строке символов заменить заданный символ на другой (заменяемый и заменяющий символ вводятся с клавиатуры).
№3. Вывести на экран 8 квадратов разного цвета таким образом: первый квадрат – самый большой, в нем второй – чуть поменьше, во втором - третий – еще меньше и т.д.
№4. В графическом режиме (точками) провести цветную линию из одного угла экрана в другой угол.
Автор: akaGM
Дата сообщения: 12.11.2009 15:51
nova2012
не теряй время -- или сам делай или ищи помощь в другом месте,
например, здесь же (за деньги)
тут обычно помогают тем, кот сам хоть что-то пытается делать
ассемблер изучают и задачи дают обычно не менеджерам по продажам...
Автор: nova2012
Дата сообщения: 12.11.2009 16:51
Ок! И на том спасибо!!!
Автор: mastaflow
Дата сообщения: 12.11.2009 23:54
Всем доброго времени суток!
Прощу оказать консультацию по следующей ситуации:

Предисловие:
Преподаватель с дипломниками пишет свою ОС. На данный момент реализовано следующее (это насколько я понял, т.к. препода реально очень тяжело понять - загрузка, переход в х86-режим, затем в х64. Имеется также возможность "отладочной печати" - печатается содержимое регистров. Для чего эта ОС - честно скажу, я не знаю.

Суть:
Передо мной стоит задача:
Подобрать инструменты, чтобы можно было осуществлять сборку исполняемого файла из нескольких модулей, при этом один модуль может быть 16-битным, другой 32-битным, третий 64-битным. Вот это всё добро требуется слинковать в один файл.
Буду признателен за любые советы (какой инструментарий или где можно найти информацию и т.п.)
Автор: akaGM
Дата сообщения: 13.11.2009 14:04
mastaflow
такие вопросы совсем уж к крутым спецам...
http://www.wasm.ru/
погугли конечно, что очевидно...
Автор: mastaflow
Дата сообщения: 13.11.2009 17:01
Про ресурс этот знаю и про "погугли" тоже.
Тем не менее все равно спасибо
Автор: akaGM
Дата сообщения: 13.11.2009 18:56
mastaflow
ничего личного, никаких намёков -- пИсано же: "что [тебе и так] очевидно"

вопрос очень сложный, тут скорее по конкретике форум, по частным вопросам...
Автор: Roman1992
Дата сообщения: 14.11.2009 17:29
Написать Программу на Языке Асемблера,которая дописывает в файл a.txt Строку Текста с Клавиатуры
Автор: akaGM
Дата сообщения: 14.11.2009 18:23
Roman1992
Прочитать Начало Этого Топа
Автор: Roman1992
Дата сообщения: 14.11.2009 19:40
А можно страничку пожалуйста
Автор: Abs62
Дата сообщения: 14.11.2009 19:58
Roman1992
Первая страница, первый пост. Принять как руководство к действию.
Автор: Roman1992
Дата сообщения: 14.11.2009 21:44
Все прочитал ну помогите ктонить.Я ж не даром прошу отблагадарю WebMoney(WMZ)

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384

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


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