;Начало программы
masm
.model small
.stack 100h
.data
dosver dw 0
.code
start:
mov ax,@data ;
mov ds,ax ;инициализация данных
;---------------------------------------------------------------------
;Определение версии ДОС с помощью функции 30h прерывания 21h.
;Если версия ДОС 3.10, то в регистр AH помещается значение 10,
;а в AL помещается 3.
;---------------------------------------------------------------------
mov ah,30h
int 21h
xchg al,ah
mov dosver,ax
mov ah,09h ;вывод значение dosver на экран.
lea dx,dosver
int 21h
;----------------------------------------------------------------------
;Стандартный выход в ДОС.
;----------------------------------------------------------------------
mov ah,4ch
int 21h
end start
Заместо выдачи версии ДОС мне прога выкидывает кучу всякого "мусора": 4_е строки разнобразных символов. Я недавно сел за ассемблер может чего не доганяю. Помогите.
Ещё раз помогите новичку :)
Модератор: Andy
Потому, что dosver это не строка. Преобразовывай в строку и выводи.
ЗЫ. Книги для начинающих по идее рулят
ЗЫ. Книги для начинающих по идее рулят

*provided AS IS
а какими командами это можно сделать (в каком направлении "копать")????
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Специальной команды нет, придётся придумать самому алгоритм для преобразования числа в строку. Самый простой способ в цикле делить исходное число на 10 и запоминать разницу между исходным числом и результатом деления умноженным на 10, т.е., фактически, каждый раз запоминать остаток от деления. Затем полученную строку придётся инвертировать. Школьная математика рулит 

Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Понятно. Я было начал думать про команду STOSW, но видно она не подходит, tasm выдаёт сообщение об ошибке.