IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

 
Closed Topic Открыть новую тему 
> перевод числа в десятичное,вывод на экран и тд
сообщение
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 239
Пол: Женский
Реальное имя: Юлия

Репутация: -  3  +


в этой проге нужно перменную TotalCount вывести на екран в виде десятичного числа (без процедур, функций, макросов и пр)

data SEGMENT

MyArray DB 1, 2, 3, 1, 2, 3, 1,
TotalCount DB 0
ARRAY_size equ 7



code SEGMENT
ASSUME cs:code, ds:data
begin:

MOV AX, data
MOV DS, ax

lea SI,MyArray
mov bl,[SI+ARRAY_size-1]
mov cx,ARRAY_size

Sloop:
LODSB
cmp al,bl
jne NextChar
inc TotalCount

NextChar:
LOOP Sloop






MOV ax,4c00h
int 21h

code ENDS
end begin

2. В масиве A[m] заменить все нулевые елементи (крщму первого) на значения предыдущего елемента.
масив ввести с клавы и вывести потом на экран, и еще ту же самую задачу сделать с помощью паскаля. Вотя пробовала , но не сложилось....
Uses Crt;
var a:array[1..10] of integer;
m:byte;

begin
ClrScr;
for m:= 1 to 10 do
read(a[m]);


for m:= 1 to 10 do
begin
asm
mov SI,word ptr m
mov ax, word ptr a[SI+1]
cmp ax,0
jnz @No
mov bx,word ptr a[SI]
mov word ptr a[SI+1],bx
@No: mov ax, word ptr a[SI+1]
end;
end;
for m:=1 to 10 do
write(a[m]);
end.


--------------------
For every evil under the sun
There is a remedy or there is none
If there is one - try to find it
If there is none - never mind it!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 239
Пол: Женский
Реальное имя: Юлия

Репутация: -  3  +


такое впечатление что тут асма вообще никто не знает....нахрен было ввобще этот раздел создавать......пока дождешься чей то помощи то сам все решишь!!! norespect.gif


--------------------
For every evil under the sun
There is a remedy or there is none
If there is one - try to find it
If there is none - never mind it!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


В первой программе у тебя не определён стек - я добавил:
_stack	segment stack
db 2048 dup(?)
_stack ends

data SEGMENT

MyArray DB 1, 2, 3, 1, 2, 3, 1
TotalCount DB 0
ARRAY_size equ 7

data ENDS


code SEGMENT
ASSUME cs:code, ds:data
begin:
cld

MOV AX, data
MOV DS, ax

lea SI,MyArray
mov bl,[SI+ARRAY_size-1]
mov cx,ARRAY_size

Sloop:
LODSB
cmp al,bl
jne NextChar
inc TotalCount

NextChar:
LOOP Sloop

xor ax,ax
push ax
mov al,TotalCount
mov cl,10
Div10:
div cl
add ah,'0'
push ax
and ax,0FFh
jne Div10
WriteDig:
pop dx
or dx,dx
jz Done
mov dl,dh
mov ah,2
int 21h
jmp WriteDig
Done:
mov ah,2
mov al,13
int 21h
mov ah,2
mov al,10
int 21h

MOV ax,4c00h
int 21h

code ENDS
end begin



Вторая на ассемблере (в формате COM, её надо "tlink /t"):

N equ 10

TEXT segment
assume cs:TEXT,ds:TEXT

org 100h
entry:
cld

lea di,a
mov cx,N
read_elem:
xor ax,ax
push di
push cx
read_dig:
push ax
mov ah,1
int 21h
cmp al,13
je read_done
cmp al,'0'
jb fmt_error
cmp al,'9'
ja fmt_error
sub al,'0'
xor bx,bx
mov bl,al
pop ax
mov cl,10
mul cl
add ax,bx
jmp read_dig

fmt_error:
mov ah,2
mov dl,8
int 21h
pop ax
jmp read_dig

read_done:
mov ah,2
mov dl,10
int 21h
pop ax
pop cx
pop di
stosw
loop read_elem

lea si,a+2
mov cx,N-1
next_elem:
mov di,si
lodsw
or ax,ax
jnz skip_elem
or dx,dx
jnz next_elem2
mov ax,[si-4]
stosw
mov dx,-1
jmp next_elem2
skip_elem:
xor dx,dx
next_elem2:
loop next_elem

lea si,a
mov cx,N
write_elem:
lodsw
push cx
push si
or ax,ax
jns pos
neg ax
push ax
mov dl,'-'
mov ah,2
int 21h
pop ax
pos:
push 0
mov cx,10
div10:
xor dx,dx
div cx
add dx,'0'
push dx
or ax,ax
jnz div10
write_dig:
pop dx
or dx,dx
jz wr_done
mov ah,2
int 21h
jmp write_dig
wr_done:
mov ah,2
mov dl,' '
int 21h
pop si
pop cx
loop write_elem

mov ah,2
mov al,13
int 21h
mov ah,2
mov al,10
int 21h

mov ax,4C00h
int 21h

a dw N dup(?)

TEXT ends
end entry



Вторая в виде вставок:
program Rep;

const
N = 10;

var
a: array[1..N] of Integer;
i: Integer;

begin
for i := 1 to N do
Readln(a[i]);

asm
cld
lea si,a+2
mov cx,N-1
@@1:
mov di,si
lodsw
or ax,ax
jnz @@2
or dx,dx
jnz @@2
mov ax,[si-4]
stosw
mov dx,1
jmp @@3
@@2:
xor dx,dx
@@3:
loop @@1
end;

for i := 1 to N do
Write(a[i], ' ');
Writeln;
end.


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Бывалый
***

Группа: Пользователи
Сообщений: 239
Пол: Женский
Реальное имя: Юлия

Репутация: -  3  +


rolleyes.gif ....я правда уже это сдала но все равно спасибо...


--------------------
For every evil under the sun
There is a remedy or there is none
If there is one - try to find it
If there is none - never mind it!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


Цитата
но все равно спасибо...
Право, не за что. Впредь было бы неплохо указывать, что необходимость в ответе уже отпала - ведь не все посещают форум ежедневно.


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Бывалый
***

Группа: Пользователи
Сообщений: 239
Пол: Женский
Реальное имя: Юлия

Репутация: -  3  +


Цитата
Впредь было бы неплохо указывать, что необходимость в ответе уже отпала

Цитата
.....пока дождешься чей то помощи то сам все решишь


--------------------
For every evil under the sun
There is a remedy or there is none
If there is one - try to find it
If there is none - never mind it!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Closed Topic Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 16.10.2024 13:53
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name