Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
15 / 15 / 2
Регистрация: 20.11.2009
Сообщений: 452

Вывод на экран версии DOS

01.02.2011, 23:47. Показов 3267. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
нужно вывести
версию доса через 21 прерывание
через 29 выволось, но 21 никак

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
sseg        segment para stack 'stack'
db      256 dup(?)
sseg        ends
 
Dseg_1  segment para public 'data'
str1    db 'MS DOS Version->>','$'
Dseg_1  ends
 
cseg        segment para public 'code'
assume      cs:cseg, ds:Dseg_1, ss:sseg
start       proc far
;
push        ds
sub     ax, ax
push        ax
;
mov     bx, Dseg_1
mov         ds, bx
;
call        main
ret
start       endp
main        proc near
 
 
 
 
mov ah, 9h
lea dx,str1
int 21h
xor dx,dx
 
mov ax,3306h
int 21h
 
add bl, 30h
 
mov ah, 9h
lea ah, bl
int 21h
 
 
add     bh,30h
 
mov ah, 9h
mov al, bh
int 29h
 
 
ret
main        endp
cseg        ends
 
    end start
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.02.2011, 23:47
Ответы с готовыми решениями:

Выведите на экран номер версии DOS
помогите!

Написать программу, выводящую на экран номер версии DOS, а также системную дату и время на языке MS-DOS
написать программу,выводящую на экран номер версии DOS,а также системную дату и время на языке MS-DOS

Вывод версии DOS
Задание: Дать версию OC используя функции прерывания 21h Вход: AH = 30H Выход: AL – старшая часть версии; AH – меньшая часть версии. ...

3
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,940
02.02.2011, 08:40
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
sseg            segment para stack 'stack'
db              256 dup(?)
sseg            ends
 
Dseg_1  segment para public 'data'
str1    db 'MS DOS Version->>','$'
Dseg_1  ends
 
cseg            segment para public 'code'
assume          cs:cseg, ds:Dseg_1, ss:sseg
start           proc far
;
push            ds
sub             ax, ax
push            ax
;
mov             bx, Dseg_1
mov             ds, bx
;
call            main
ret
start           endp
main            proc near
 
 
 
 
mov     ah, 9h
lea     dx,str1
int     21h
xor     dx,dx
 
mov     ah,30h
int     21h
push ax
mov dl,al
add     dl, 30h
 
mov     ah, 2
int     21h
mov dl,'.'
int     21h
pop dx
mov dl,dh
 
add     dl,30h
int     21h
 
 
ret
main            endp
cseg            ends
 
        end     start
0
15 / 15 / 2
Регистрация: 20.11.2009
Сообщений: 452
02.02.2011, 12:37  [ТС]
Не понял откуда в коде берутся значения BL и BH.
написал следующее, номер версии выводится правильно, подверсии нет, ибо двузначное. Знаю что к числу нужно прибавить + 30H, затем поэлементно делить на 10, заполняя строчку с конца, но как это сделать?
простого примера не нашел
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
sseg        segment para stack 'stack'
db      256 dup(?)
sseg        ends
 
Dseg_1  segment para public 'data'
str1    db 'MS DOS Version->>','$'
str2    db '?','$'
Dseg_1  ends
 
cseg        segment para public 'code'
assume      cs:cseg, ds:Dseg_1, ss:sseg
start       proc far
;
push        ds
sub     ax, ax
push        ax
;
mov     bx, Dseg_1
mov         ds, bx
;
call        main
ret
start       endp
main        proc near
 
 
 
;выводим сторчку номер версии
mov ah, 9h
lea dx,str1
int 21h
xor dx,dx
; получаем номер
mov ax,3306h
int 21h
 
; выводим старший номер 
 
mov str2,bl
add     str2, 30h
 
mov ah, 9h
lea dx,str2
int 21h
xor dx,dx
 
mov     ah, 2h
int     21h
mov dl,'.'
int     21h
 
; выводим номер подверсии
 
mov str2,bh
;add     str2, 30h
 
mov ah, 9h
lea dx,str2
int 21h
xor dx,dx 
ret
main        endp
cseg        ends
 
    end start
0
15 / 15 / 2
Регистрация: 20.11.2009
Сообщений: 452
02.02.2011, 15:39  [ТС]
попробовал прикрутить часть этого кода, но
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
                
lea     di, dResult - 2 
                call    PrintDEC    ; Преобразование числа в символьный вид 
 
                mov     dx, offset sResult 
                mov     ah, 09h 
                int     21h         ; Печать результата на экране 
 
                int     20h         ; Завершение работы программы 
 
PrintDEC        PROC 
                std 
PH1:            xor     dx, dx      ; dx =0 чтобы избежать переполнения при 
                                    ; деление на 10 
                mov     cx, 10 
                div     cx 
                add     dl, '0'     ; преобразуем число в символьный вид 
                xchg    ax, dx 
                stosb               ; запоминаем в памяти по es:di 
                xchg    ax, dx 
                test    ax, ax      ; Пока не ноль преобразуем 
                                    ; в десятичный вид 
                jnz     PH1 
                ret 
ENDP            PrintDEC
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.02.2011, 15:39
Помогаю со студенческими работами здесь

Вывод версии DOS
Есть функция 3306 в прерывании 21h, которая возвращает данные, пример которых указан во вложении. Как возможно возвращаемые значения...

Вывод строки на экран в DOS
Привет всем. Никак не могу понять программу вывода строки на экран в DOS. Для чего и где выделяется stack 10h, зачем еще перемещать в dx s1...

Вывод сообщения на экран посимвольно средствами DOS
Здравствуйте, я вовсе не специалист и поэтому не сильно разбираюсь в ассемблере, но мне необходим какой-нибудь пример, демонстрирующий...

Вывод содержимого файла на экран со 2 строки в ms-dos
Доброго времени суток. Подскажите как в MS-DOS (COMMAND.COM) можно вывести файл начиная со 2 строки? Такой способ выводит файл...

Вывод символов на экран в MASM под DOS
Недавно начал изучать ассамблер по Калашникову. У него приведен пример такой программы CSEG segment org 100h Start: MOV ax,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru