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

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

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

> перевод числа в десятичное,вывод на экран и тд
Catty
сообщение 9.04.2006 17:16
Сообщение #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 
 К началу страницы 
+ Ответить 
 
Closed Topic Открыть новую тему 
Ответов(1 - 5)
Catty
сообщение 14.04.2006 21:05
Сообщение #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 
 К началу страницы 
+ Ответить 
xds
сообщение 15.04.2006 3:50
Сообщение #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 
 К началу страницы 
+ Ответить 
Catty
сообщение 15.04.2006 11:08
Сообщение #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 
 К началу страницы 
+ Ответить 
xds
сообщение 16.04.2006 5:19
Сообщение #5


N337
****

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

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


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


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Catty
сообщение 18.04.2006 17:29
Сообщение #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

 

- Текстовая версия 28.07.2025 19:46
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"