Страница 1 из 2

Подскажите пожалуйста по ассемблеру

Добавлено: 25 фев 2008, 21:22
Alex_Burn
Здравствуйте, уважаемые участники форума!
Помогите пожалуйста в освоении ассемблера. Дело в том, что у нас в универе по дисциплие Орг. ЭВМ лабы идут на ассемблере. Лекции не по теме, а на лабах препод ничего не объясняет, говорит что-то вроде "Разбирайтесь сами". Ну я я в ассемблере практически ничего не смыслю. После языков высокого уровня ассемблер кажется чем-то иноземным. Может вы подскажете мне что-нибудь, дадите какие-нибудь советы. Больше, пожалуй, мне обратиться не к кому.
Задание состоит в следующем:
1. Переведите числа из десятичной системы счисления в двоичную:
65, 111, 243
2. Сложите и умножьте первые два числа 1-го задания в 2-чной системе счисления. Результат проверьте в 10-чной системе.
3. Запишите числа своего варианта из первого задания в 2-чной системе счисления так: для положительного- отрицательное представление, для отрицательных- их модуль.
4. Выполните первые два задания в 16-ричной системе.
Плюс нужно составить программу, объединяющую в себе предыдущие
В общем, я в полнейшем шоке :confused:
Это первая лаба и абсолютно без всяких объяснений! :confused:
Помогите пожалуйста кто чем может

Re: Подскажите пожалуйста по ассемблеру

Добавлено: 26 фев 2008, 08:17
airyashov
ассемблер то какой 80х86?

Re: Подскажите пожалуйста по ассемблеру

Добавлено: 26 фев 2008, 08:40
Alex_Burn
Я думаю будет лучше именно в 80х86.
Да, и еще вопрос, коды на TASM и MASM сильно различаются?
Я думаю лучше будет в TASM

Re: Подскажите пожалуйста по ассемблеру

Добавлено: 26 фев 2008, 09:15
airyashov
Alex_Burn писал(а):Я думаю будет лучше именно в 80х86.
Да, и еще вопрос, коды на TASM и MASM сильно различаются?
Я думаю лучше будет в TASM
Задание 1
Tasm

Код: Выделить всё

.model small

.stack 100h

.data
	ba db 65
	bb db 111
	bc db 243

	bin_str db 8 dup('0'),10,13,'$'
	
	about db 10,13,'Binary digits 65,111,243',10,13,'$'
.code

PrintBin proc; параметр в al
	push ax
	push dx
	push cx
	push di
	
	mov di, offset bin_str+8;указывает на конец строки + 1
	mov cx,8
bits:
	dec di
	mov byte ptr [di],'0' 
	ror al,1
	jnc bits_next
	mov byte ptr [di],'1'
bits_next:		
	loop bits
	
	mov dx, di
	mov ax,0900h
	int 21h
	
	pop di
	pop cx
	pop dx
	pop ax
			
	ret
PrintBin endp 


begin:

	mov ax,@data
	mov ds,ax
	
	mov ax,0900h
	mov dx, offset about
	int 21h 

	mov al, ba
	call PrintBin
	
	mov al, bb
	call PrintBin

	mov al, bc
	call PrintBin
	
	mov ax,4c00h
	int 21h

end begin

Re: Подскажите пожалуйста по ассемблеру

Добавлено: 26 фев 2008, 09:35
airyashov
для 3 изменить код перед вызовами процедуры

Код: Выделить всё

mov al, ba
[B]neg al[/B]
call PrintBin
2-е не очень понятно, что надо делать вывести в 2-ой сумму и поизведение или написать операции вручную

Re: Подскажите пожалуйста по ассемблеру

Добавлено: 26 фев 2008, 13:44
Alex_Burn
Спасибо большое за код!
2-е не очень понятно, что надо делать вывести в 2-ой сумму и поизведение или написать операции вручную

Результаты 2-й программы я представляю примерно следующим образом:

Десятичное представление суммы 176
Двоичное представление суммы 010110000

Десятичное представление произведения 7215
Двоичное представление произведения 1110000101111


Проверка операций к программе отношения не имеет




Можно спросить насчет общей программы?
Возможно ли сделать ее универсальной?
Что-то типа

десятичное число: 111
двоичный код 0000000001101111
дополнительный код 1111111110010001
в шестнадцатеричном формате 006F

десятичное число: 65
двоичный код 0000000001000001
дополнительный код 1111111110111111
в шестнадцатеричном формате 0041

сумма чисел:176
двоичный код 0000000010110000
дополнительный код 1111111101010000
в шестнадцатеричном формате 00B0

произведение чисел: 7215
двоичный код 0001110000101111
дополнительный код 1110001111010001
в шестнадцатеричном формате 1C2F

При этом десятичные цифры вводились бы с клавиатуры?

Re: Подскажите пожалуйста по ассемблеру

Добавлено: 26 фев 2008, 16:08
airyashov
нет ничего невозможного. Второе Я тоже примерно так и представлял.
Но разбираться предется вам. И как-то отрицательные числа особо никогда не приходилось вводить? Есть ли ограничение на размер чисел: байт, слово... и т.д.
Диапазон для байта -128...127 например.

Re: Подскажите пожалуйста по ассемблеру

Добавлено: 26 фев 2008, 17:53
Alex_Burn
И как-то отрицательные числа особо никогда не приходилось вводить? Есть ли ограничение на размер чисел: байт, слово... и т.д.
Извините, не понял вопроса. Что вы имеете ввиду?

Re: Подскажите пожалуйста по ассемблеру

Добавлено: 27 фев 2008, 08:54
airyashov
вопрос такой как хотите вводить числа, с клавиатуры или они заданны как константы, с т.з. ассемблера 243 это отрицательное число, если хранить его в переменной размером 1 байт

Re: Подскажите пожалуйста по ассемблеру

Добавлено: 27 фев 2008, 17:10
Alex_Burn
Вы сейчас спрашиваете про 2-е задание? Я думаю никаких ограничений на размер чисел нет. В принципе ни одно из заданий строго не требует ввода с клавиатуры.