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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2012, 12:05   #1
olo
Новичок
Джуниор
 
Регистрация: 28.01.2011
Сообщений: 2
По умолчанию Ввести числа и вычислить значение выражения. Выдать результат. (Нужны подробные комментарии по коду программы)

Код:
.model small 
.data 
mesInputA db "Vvedite A(ot 0 do 255): $"
mesInputB db "Vvedite B(ot 0 do 255): $"
	binA db "A v binarnom: $"
	binB db "B v binarnom: $"
	inErr db "Owibka vvoda!! Vvedite zanovo: $"
	AsubB db "A - B = $"
	rez db "C = (A - B)*4 = $"
	rezSdvig db "C = (A - B)*4  > 3 = $"
	.stack 
	db 256 dup("?")
	.code 
	coutStr macro a
	push ax
	push dx
	mov ah, 9
	mov dx, offset a
	int 21h
	pop dx
	pop ax
	endm
	;--------------------------------------------
	cinChar macro		
	mov ah, 1h			
	int 21h
	sub al, 30h			
endm				
;------------------------------------------------
endl macro				
	push ax 			
	push dx				 
	mov ah, 2			
	mov dx, 10			
	int 21h
	pop dx				
	pop ax				
endm
;---------------------------------------------------------
print proc				
	push cx
	push bx
	push dx
	mov bx, ax
	push ax
	mov cx, 16			
cicl:
	xor dx, dx			
	sal bx, 1			
	adc dl, 30h			
	mov ah, 2			
	int 21h 			
	loop cicl														
	pop ax
	pop dx
	pop bx
	pop cx
	ret 				
endp
;---------------------------------------------------------
input macro
	local startErr, start, m1, m2 
	jmp	start	
startErr:
	endl
	coutStr inErr
start:
	mov cx, 3       
	xor dx, dx
m1:					
	xor ax, ax		
	cinChar 		
	cmp al, 9		
	ja m2			
	xor bx, bx		
	mov bl, al		
	xor ax, ax		
	mov al, dl		
	xor dx, dx		
	mov dl, 10
	mul dl			
	cmp ah,0		
	ja  startErr		
	xor dx, dx
	mov dl, al			
	add dx, bx			
	cmp dh, 0			   
	ja startErr			
	loop m1
m2:

endm
;---------------------------------------------------------
calc proc				
	sub ax, dx			
	endl
	coutStr AsubB		 
	call print			
	shl ax, 2	
	endl
	coutStr rez	 
	call print  
	ror ax, 3	 
	ret 
endp
;---------------------------------------------------------
vyvod proc			
	endl
	coutStr rezSdvig
	call print
	ret
	
endp
;---------------------------------------------------------
main proc
	mov ax, @data 	
					
	mov ds, ax		
	xor ax, ax		
	
	coutStr mesInputA	
	input				
	mov ax, dx			
	endl				
	coutStr binA		
	call print			            
	push ax 			
	
	endl
	coutStr mesInputB	
	input				
	mov ax, dx			
	endl				
	coutStr binB		
	call print			
	push ax 			
	
	pop dx				
	pop ax				
	call calc			
	call vyvod
	
	
	mov AH, 08h			
	int 21h				
						
	mov AX, 4c00h		 
						
	int 21h				


main endp

end main


___________
1) Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)

2) Название темы должно адекватно отражать суть решаемой задачи/проблемы.
На первый раз я исправил.
В дальнейшем темы с подобным названием будут закрываться/удаляться,
а автор такой темы получать штрафы.


Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 05.06.2012 в 12:55.
olo вне форума Ответить с цитированием
Старый 05.06.2012, 12:14   #2
olo
Новичок
Джуниор
 
Регистрация: 28.01.2011
Сообщений: 2
По умолчанию

Пользователь вводит два числа А и В в десятичном виде. Программа должна:
1. Посчитать С=(А-В)*4.
2. Выполнить циклический сдвиг полученного числа С на 3 бита вправо.
3. Вывести на экран число С и все промежуточные результаты в двоичном виде.
olo вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Используя рекурсию, вычислить результат арифметического выражения??? Nataly026 Паскаль, Turbo Pascal, PascalABC.NET 4 09.03.2012 21:36
вычислить значение выражения ulechka128 Помощь студентам 0 25.12.2011 13:35
Вычислить значение выражения Genius94 Паскаль, Turbo Pascal, PascalABC.NET 5 02.12.2011 00:05
Комментарии к коду программы на Delphi Asblue Помощь студентам 3 20.11.2010 17:13