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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2015, 22:03   #1
DaoKemZem
 
Регистрация: 17.10.2015
Сообщений: 3
По умолчанию Число наоборот (Перевести с Паскаля на Ассемблер)

Помогите пожалуйста с кодом. Я в Ассемблере ничего не понимаю (Переведите на Ассемблер)

Код:
var
    n, m: longint;
    a: byte;
begin
    readln(n);
    m := 0;
    while n>0 do begin
        a := n mod 10;
        n := n div 10;
        m := m*10 + a;
    end;
    writeln(m);
 
readln;
end.

Последний раз редактировалось Stilet; 17.12.2015 в 22:52.
DaoKemZem вне форума Ответить с цитированием
Старый 19.12.2015, 08:28   #2
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

..что значит число наоборот?
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 19.12.2015, 10:48   #3
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

Судя по коду - запись в обратном порядке. То есть 12345, наоборот 54321.
Arigato вне форума Ответить с цитированием
Старый 19.12.2015, 13:22   #4
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

1. Если это строка/символы, то:
Код:
var   DB  '1234'                     ; исходная строка

begin:
   MOV   SI,var+3                    ; перемещаем указатель на конец строки
   MOV   CX,4                        ; кол-во символов в строке
   STD                               ; взводим флаг DF (обратный шаг) 
change:
   LODSB                             ; читаем из SI..
   INT   29h                         ; выводим символ на экран
   LOOP  change                      ; мотаем цикл CX-раз
   RET
2. Если натуральное число:
Код:
var   DB  0x1234                     ; исходное число

begin:
   MOV   AX,[var]                    ; AX = 1234
   ROR   AL,4                        ; AX = 1243
   ROR   AH,4                        ; AX = 2143
   XCHG  AH,AL                       ; AX = 4321
   RET
3. Ещё можно организовать битовую инверсию (зеркало).
По-сути, это и есть "Число наоборот". То есть:
Код:
	1234h = 0001 0010 0011 0100b
	2C48h = 0010 1100 0100 1000b
*********************************************
var   DB  0x1234

begin:
   MOV   AX,1234                     ; на входе:  АХ = 1234h
   XOR   BX,BX                       ; здесь будет результат
   MOV   CX,16                       ; кол-во повторов цикла
change:
   SHR   AX,1                        ; выталкиваем мл.бит во-флаг CF
   RCL   BX,1                        ; ставим его старшим в BX
   LOOP  change                      ; мотаем цикл 16 раз
   RET                               ; на выходе: BХ = 2С48h
Нашедшего выход - затаптывают первым..

Последний раз редактировалось R71MT; 19.12.2015 в 13:25.
R71MT вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевести с Паскаля на си magic666 Помощь студентам 2 28.09.2014 15:57
Перевести из паскаля в Си AirC Общие вопросы C/C++ 8 19.05.2014 18:42
Перевести с Паскаля на Си lyubov17 Помощь студентам 0 10.12.2013 21:11
перевести из паскаля на с++ екатерина новикова Общие вопросы C/C++ 1 19.12.2011 19:21
перевести из паскаля в си++ екатерина новикова Помощь студентам 0 19.12.2011 19:02