Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2012, 19:18   #1
Wild Heart
Новичок
Джуниор
 
Регистрация: 27.11.2010
Сообщений: 2
По умолчанию Прошу проверить задачи ассемблер

Высоко уважаемые! помогите пожалуйста с решением , а точнее с проверкой двух задач... и построением блок-схем к ним
заранее примного благодарен
1) написать подпрограмму для вычисления арифметической суммы некоторого массива чисел повышенной точности без знака. С помощью этой подпрограммы обработать два массива. Для передачи параметров использовать общие ячейки памяти
Код:
Name Program
; описание констант
           N11 = 3
           N12 = 2    
                  
           N21 = 4
           N22 = 3
           
           L1 = N12 * TYPE X1
           L2 = N22 * type X2
; описание  переменных
Data segment
	x1 dw 1212h, 9898h
	    dw 6565h, 5454h
	    dw 5868h, 3244h
	y1 dw N12+1 dup (0)
	
	X2 dw 1919h, 1290h, 2345h
	     dw 4343h, 2345h, 3456h
	     dw 5465h, 3456h, 3456h
	     dw 3245h, 3234h, 6789h     
	Y2 dw N22+1 dup (0)
	
	FormX dw 0                	; описание общих ячеек памяти
	FormY dw 0    
	L dw 0
Data ends

Stack SEGMENT
	DW 16 dup(?)
	StkTOp LABEL  word
Stack ends

Code SEGMENT
	ASSUME CS: Code, DS: Data, ES: Data, SS: Stack
	
; Здесь описываются подпрограммы
abc proc      
         mov bx, FormX
         mov bp, FormY

M2:	xor si, si
	 
	push ax
	push cx
	clc
M1: 	mov ax, [bx+si]
	adc ds:[bp+si], ax
	inc si
	inc si
	dec cx			; кол-во слов в числе
	JNZ M1
	
        xor dx, dx
	adc ds:[bp+si], dx
	
	pop cx
	pop ax
	
        add bx, L
	dec ax
	JNZ M2


ret 
abc endp

; Основная программа
Start:	 mov AX, Data
	 mov DS, AX
	 mov ES, AX
	 mov Ax, Stack
	 mov SS, AX
	 mov SP, offset StkTop
 	
          lea ax, x1
          mov formX, ax
          lea ax, y1      
          mov formY, ax
          mov ax, L1
          mov L, ax
          mov cx, N12
          mov ax, n11
          call abc       
          
          lea ax, x2
          mov formX, ax
          lea ax, y2
          mov formY, ax
          mov ax, L2
          mov L, Ax
          mov cx, N22
          Mov ax, N21
          call abc
code ends
end start
2) написать макрокоманду для замены в некоторой строке символов одного символа на другой. С помощью этой макрокоманды обработать две строки заменяя в 1-ой символ "+" на символ "-" а во 2-ой - символ "a" на символ "A"
Код:
Name Program
; Описание констант
	
;Описание  переменных
Data segment
	S1 db "Privet+Poka"			; строка 1
	SEnd1 db ?                                          	; ее конец   
	SL1 = (offset SEnd1 - offset S1) / type S1   ; длина строки 1			  
	SY1 db SL1+1 dup (0)
	
	S2 db "mashina-cando"			; строка 2
	SEnd2 db ?	                                        ; ее конец
	SL2 = (offset SEnd2 - offset S2) / type S2   ; длина строки 2      		
	SY2 db SL2+1 dup (0)
	
Data ends
	;SL1 = (offset SEnd1 - offset S1) / type S1   ; длина строки 1
	                 

Stack SEGMENT
	DW 16 dup(?)
	StkTOp LABEL  word
Stack ends

Code SEGMENT
	ASSUME CS: Code, DS: Data, ES: Data, SS: Stack
	
; Здесь описываются подпрограммы  

	; s - данная строка, О - символ с которым сравнивают, В - символ замены
				; SL - кол-во символов в строке
abc macro SX, SY, O, B, SL
	Local M1, M2, m3
	
	mov cx, SL  		; кол-во символов в строке
	lea si, sx		; адрес строки   
	lea di, sy
	mov dl, B		; символ для замены
	

M1:	mov al, [si]		; загружаем символы
	cmp al, O		; сравниваем с образцом
	JNE M2	         	; если совпадают то идем на M2	         		
	mov [di], dl            	; меняем символ
	JMP M3
	
M2:	mov [di], al

M3:	inc di
	inc si			; модифицируем адрес
	dec cx
	JNZ M1
endm

; Основная программа
Start:	 mov AX, Data
	 mov DS, AX
	 mov ES, AX
	 mov Ax, Stack
	 mov SS, AX
	 mov SP, offset StkTop
	                               

          abc S1,SY1, '+', '-', sl1  
                   
          abc S2, SY2, 'a', 'A', sl2
code ends
end start

Последний раз редактировалось Wild Heart; 17.01.2012 в 19:21.
Wild Heart вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прошу проверить код pandaaaaa Паскаль, Turbo Pascal, PascalABC.NET 6 14.12.2011 01:58
Проверить правильность решения(ассемблер) Нина93 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 26.12.2010 17:42
Прошу проверить на неправильность.. CodeExpert Помощь студентам 0 20.12.2009 20:14
нужно проверить на ошибки, ассемблер pandamonic Фриланс 2 13.08.2009 22:23
Прошу проверить код программы Pashtet Паскаль, Turbo Pascal, PascalABC.NET 1 19.11.2008 11:50