Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для Windows/Dos > Задания по ассемблеру


Автор: Ura20007 16.5.2007, 11:51
Всем приветик.Помогите пожалуйста с 3 задачами по ассемблеру

1)Написать программу преобразования числа в символ и наоборот(ASCII).

2)Написать программу,которая выводит на экран таблицу ASCII .

3)Программа создания,удаления ,переименования,чтения,открытия файла.

Если у кого-то остались листинги программы скиньте пожалуйста.Очень нужно!!!! 

Заранее огромное спасибо.

  

Автор: MAKCim 16.5.2007, 19:59
Цитата(Ura20007 @  16.5.2007,  11:51 Найти цитируемый пост)
Написать программу,которая выводит на экран таблицу ASCII .

Код

ascii:
    push ds
    xor ax, ax
    mov ds, ax
    mov ax, 0x0F00
    mov bx, 0xB800
@@:
    mov word [bx], ax
    add bx, 2
    inc ax
    test ax, 0x1000
    jz @B
    pop ds

Автор: Ura20007 16.5.2007, 21:20
И больше ничего не надо добавлять.А что с другими задачами?

Помогите пожалуйста!!!!!!!!!

Автор: dumb 16.5.2007, 22:03
MAKCim, понимаю, дос - не твое... smile да и не мое уже тоже - забыл уж почти все...

Код

    push es
    mov ax, 0b800h
    mov es, ax
    mov ax, 00F00h
    xor di, di
next: ; tasm @B/F не умеет...
    stosw
    inc al
    jnz next
    pop es


Ura20007, уважаемый, все свои задачи отправляй в Центр Помощи, так как сам ты делать ничего не будешь(и не пытаешься) - это очевидно.

Автор: MAKCim 16.5.2007, 23:08
dumb, 
тогда уж cld добавить надо (на всякий случай)  smile 

Автор: Ura20007 20.5.2007, 15:21
Ребята,а как решить остальные задачи.

Автор: Annetka 4.6.2007, 18:17
Привет! СРОЧНО нужна помощь! Спасайте!!!!!!нужно написать эту программу так,чтобы сердце появлялось на экране и им(этим изображением) можно было двигать с помощью стрелок по экрану(сердце не должно выходить за пределы экрана-так как оно сейчас является,) . Если возможно,с коментариями



Код

.MODEL TINY
.386
.CODE
assume cs:@code,ds:@code
org 100h
; Основная программа
main proc
mov ax,cs
mov ds,ax
mov ax,0a000h
mov es,ax
; Устанавливаем режим - 320x200
mov ax, 13h
int 10h
; Создаем палитру в 256 цветов
mov cx,255
palset:
push cx
mov bx,cx
shr cx,2
mov ch,cl
mov dh,cl
shl cl,3
shl dh,1
shr ch,1
mov ax,1010h
int 10h
pop cx
loop palset
; Цикл опроса клавиатуры
keycycle:
mov ax,mcol
add ax,dltc
cmp ax,10
jna resize
cmp ax,450
jna savemcol
resize:
not dltc
mov ax,mcol
savemcol:
mov mcol,ax
; Основной цикл расчета экрана
mov si,0
megacycle1:
mov di,0
megacycle2:
push di
push si
sub di,160
sub si,140
shl si,2
shl di,1
; Zi {BX} и Zr {CX}
mov cx,mcol
mov bx,mcol
; Цвет полагается равным 0
mov [col],0
fractcycle:
mov al,col
inc al
mov col,al
cmp al,20
jz output
; Считается промежуточное значение равное 2*Zi*Zr+Ci {X}
mov ax,cx
imul bx
shl ax,1
rcl dx,1
mov al,ah
mov ah,dl
add ax,di
xchg ax,bx
imul ax
mov al,ah
mov ah,dl
push ax
xchg ax,cx
imul ax
mov al,ah
mov ah,dl
push ax
sub ax,cx
add ax,si
mov cx,ax
pop ax
pop dx
add ax,dx
cmp ah,2
jna fractcycle
output:
mov al,col
shl al,3
add al,30
pop si
pop di
call plot
inc di
cmp di,320
jnz megacycle2
inc si
cmp si,200
jnz megacycle1
mov ah,0bh
int 21h
or al,al
jz keycycle
mov ax, 3
int 10h
mov ax,4c00h
int 21h
main endp
; Процедура установки точки - di- x, si- y, al- c
plot proc near
push di
mov bx,si
shl bx,6
add di,bx
shl bx,2
add di,bx
stosb
pop di
ret
plot endp
col db 1
mcol dw 450
dltc dw 0FFF7h
end main

Автор: accessd 12.6.2007, 16:20
Вот такая вот задачка:  
Реализовать средствами Assembler части интерфейса операционной системы отвечающей за ввод данных с консоли и преобразование их в целочисленный формат. Использовать данную реализацию для выполнения арифметических действий.
Прошу помочь..

Автор: stiv_nick 29.11.2007, 09:46
Помогите кто чем может. Нужно написать на ассемблере прогу находящую корни квадратного уравнения ах2+bx+с и вывести корни в делфи или паскаль (для этого создается dll библиотека). а, b, с водится с клавиатуры. Очень большая просьба к тому к то решит помочь текс на ассемблере должен быть как можно проще! так де вывожу в помощь подобный пример:
Листинг программы на Assembler:

Код

format PE console 4.0

entry start
include 'include/win32a.inc'

section '.idata' import data readable

library kernel,'KERNEL32.DLL'

import kernel,\
ReadConsole,'ReadConsoleA',\
WriteConsole,'WriteConsoleA',\
GetStdHandle,'GetStdHandle',\
ExitProcess,'ExitProcess',\
LoadLibrary,'LoadLibraryA',\
GetProcAddress,'GetProcAddress'
; Перечисляем процедуры, содержащиеся в библиотеке 'KERNEL32.DLL', которые мы будем использовать в нашей программе.

section '.data' data readable writeable

; сообщение к выводу перед вводом числа
Msg db "Enter the number: ",0
; буфер под строку с введенным числом
ResStr db 255 dup (0),0
; дескриптор стандартного потока вывода
hStdOut dd ?
; дескриптор стандартного потока ввода
hStdIn dd ?
; сколько байт прочитано
WrBytes dd ?
; имя библиотеки
dllFilename db "ExDouble.dll",0
; имя процедуры
ProcName db "Determinant",0
; дескриптор динамической библиотеки
hModule dd ?
; адрес функции динамической библиотеки
Determinant dd ?
; строка ошибки (нету библиотеки или имя процедуры не найдено)
LibErr db "Invalid library or library not found!",0


section '.code' code readable executable

start:

invoke GetStdHandle,STD_OUTPUT_HANDLE
mov [hStdOut],eax
invoke GetStdHandle,STD_INPUT_HANDLE
mov [hStdIn],eax

invoke LoadLibrary,dllFilename
mov [hModule],eax
test eax,eax
jz errexit

invoke GetProcAddress,[hModule],ProcName
mov [Determinant],eax
test eax,eax
jz errexit

invoke WriteConsole,[hStdOut],Msg,18,WrBytes,NULL

invoke ReadConsole,[hStdIn],ResStr,255,WrBytes,NULL

; заполнение последнего enter'a (это два байта 0x0D0A) нулем
mov esi,ResStr
add esi,[WrBytes]
sub esi,2
mov byte[esi],0

; передаем указатель на обработанную строку в процедуру динамической библиотеки
invoke Determinant,ResStr

; нормальный выход
exit:
invoke ExitProcess,0

; выход с ошибкой
errexit:
invoke WriteConsole,[hStdOut],LibErr,37,WrBytes,NULL
invoke ExitProcess,1




Листинг программы (код DLL библиотеки):

Код

library ExDouble; //Имя библиотеки

//Используемые модули
uses
Windows, SysUtils;

//Функция, вычисляющая детерминант

Function Determinant(a:matr;n:integer):longint;

type matr=array[1..10,1..10] of longint;
var a,b:matr;
i,j,dt,n:longint; ki,kj,di,dj, m,i,j:integer;

begin
randomize;
write('N= ');
readln(n);
for i:=1 to n do
for j:=1 to n do
a[i,j]:=random(5);
for i:=1 to n do
begin
for j:=1 to n do
write(m[i,j]:3);
writeln;
end;

d:=0; k:=1;
if (n<1) then
begin
writeln('Determinant: Cann''t run. N=',n); halt;
end;
if (n=1)
then d:=a[1,1]
else if (n=2)
then d:=a[1,1]*a[2,2]-a[2,1]*a[1,2]
else { n>2 }
for i:=1 to n do
begin
di:=0;
for ki:=1 to m-1 do
begin
if (ki=i) then di:=1;
dj:=0;
for kj:=1 to m-1 do
begin
if (kj=j) then dj:=1;
b[ki,kj]:=a[ki+di,kj+dj];
end;

d:=d+k*a[i,1]*Determinant(b,n-1);
k:=-k;
end;
Determinant:=d;
end;
//Вывод результата на экран по средствам API функции MessageBox
d := Format('Детерминант"%0.3f" = "%0.3f"!', [Base, d]);
MessageBox(HWND_DESKTOP, PChar(d), 'Результат вычисления', MB_ICONINFORMATION);

end;

exports
Determinant index 1;

begin
end.

Автор: MAKCim 29.11.2007, 10:30

 ! 
MAKCim
Модератор: Господа, используйте тег код!

Автор: EDI 8.12.2007, 12:52
Здравствуйте, господа.

Помогите, пожадуйста, с такой вещью: нужно решить задачу: Вводимые латинские большие символы преобразовать в малые, вывести их в третью строку в режиме экрана 40х25 зеленым цветом на синем фоне. И чтобы реагировала на клавишу останова Ctrl/F1

Начало получилось, дальше не могу
Код

.model small
.stack 100
.data
k1 db 41h
k2 db 5ah
.code
public _main
_main proc
mov ax,@data
mov ds,ax
mov dl,k1
q1: mov ah,2
or dl,20h
int 21h
sub dl,20h
inc dl
cmp dl,k2
jle q1
mov ah,4ch
int 21h
_main endp
end



Заранее спасибо.

Автор: EDI 9.12.2007, 10:47
ну что? поможете или идти в другое место?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)