Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перевод в TASM, переделать под TASM 
:(
    Опции темы
zall
Дата 31.5.2010, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 18.12.2008

Репутация: нет
Всего: нет



Нужно перевести в то что адекватно примется TASM'ом. может кому понадобится это вывод переменной окружения. Я знаю что это не сложно но т.к писал этот код не я, то и перевести не могу.

Код

;выдаёт системную переменную по номеру
S SEGMENT STACK;сегмент стека
DB 128 DUP (?)
S ENDS

DATA SEGMENT;сегмент данных
prigl DB "введите номер переменной:",10,13,"$"
oblom DB "такой переменной нет",10,13,"$"
DATA ENDS

ASSUME SS:S,CS:CODE,DS:DATA;ассоциируем сегменты с сегментными регистрами
CODE SEGMENT
begin:     MOV AX,DATA
           MOV DS,AX
;выводим строку
           LEA DX,prigl;загружаем в dx адрес начала строки
           mov ah,09h;вывод строки
           int 21h;
;вводим число
           mov ax,0;сначала в ах - 0
input_num:
           push ax;сохраняем в стеке
           mov ah,01h;ввод символа
           int 21h;
           mov dl,al;кладём введённый символ в dl
           pop ax;возвращаем ах из стека 
           cmp dl,13;если enter 
           je end_input;заканчиваем
           sub dl,'0';вычитаем код нуля
           mov bh,10;умножаем то что было на 10
           mul bh
           add al,dl;прибавляем введённую цифру
           jmp input_num;следущая цифра
end_input:
           mov dx,ax; кладём в dx

           MOV AH,62h;получаем адрес PSP
           INT 21h
           MOV ES,BX;кладём его в ES
           MOV DI,2Ch;смещение, где хранится адрес сегмента переменных окружения
           MOV ES,[ES:DI];сегмент назначен
           MOV DI,0;адрес тек. символа
           MOV CX,DX;в cx номер переменной
           DEC CX
           CMP CX,0
           JE doit
skip:;пропускаем первые n-1 переменных
           MOV AL,ES:[DI]
           INC DI;дальше
           CMP AL,0; прокручиваем строку до конца (символ 0)
           je next;следущая переменная
           jmp skip;ещё не кончилась
next:      mov AL,ES:[DI+1]
           cmp al,1;не закончились ли переменные
           jle netu
           LOOP skip
doit:
;выводим найденную переменную
           MOV dL,ES:[DI];выводим текущий символ
           mov ah,02h
           int 21h
;          посимвольно
           INC DI;след символ
           MOV AL,ES:[DI]
           CMP AL,0;пока не закончится переменная
           JNE doit;цикл вывода строки
;перевод строки
           mov dl,10;символ 10
           mov ah,02h
           int 21h
           mov dl,13;символ 13
           mov ah,02h
           int 21h
           jmp konec
netu:      lea dx,oblom;неверно
           mov ah,09h
           int 21h
konec:
;завершение программы
           mov ah,4ch
           int 21h
code       ends

end        begin


Это сообщение отредактировал(а) zall - 31.5.2010, 19:31
PM MAIL   Вверх
ФедосеевПавел
Дата 31.5.2010, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 7.2.2009

Репутация: нет
Всего: 10



Строка 41
Код
           MOV ES,[ES:DI];сегмент назначен

замени на
Код
           MOV ES,ES:[DI];сегмент назначен

PM   Вверх
zall
Дата 1.6.2010, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 18.12.2008

Репутация: нет
Всего: нет



спасибо.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0658 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.