С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
ignisdivine
4 / 4 / 0
Регистрация: 27.03.2011
Сообщений: 38
1

Видеобуфер

21.05.2011, 23:10. Просмотров 1507. Ответов 3
Метки нет (Все метки)

Проблема с выводом напрямую строки посимвольно через видеобуфер, курсор сдвигается, но затирается содержимое придудыщее(зацикленный блок после метки out_str Может кто подскажет в чем проблема? Спасибо.

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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
data segment
    ; add your data here!
    path  db  "input.txt"
    buffer db ?
    count db ?
    stringMoving equ 0Ah
    carriageReturn equ 0Dh
    Size equ 7
    ;patch   db  81 dup(0)
    cmdString db  81 dup(0)
    start_position db 0
 
    
    runner db 0   
    
ends
 
stack segment
    dw   256  dup(0)
ends
 
code segment
start:
; set segment registers:
    mov ax, data
    mov ds, ax
    mov es, ax  
    mov ax, 3 ; ето устанавлюєм режим
    int 10h 
    ;open file in read-only mode
     mov ah, 3dh
    mov al, 0
    mov dx, offset path
    int 21h
    jc err
;set bx to file    
    mov bx, ax 
    
    xor cx, cx
    xor dx, dx
    push 0B800h
    pop es
    
    mov count, 0
    mov di, 0
;set current file position. 
    mov ax, 4200h
    int 21h
    
;reading file
out_str:
    
    mov ah,3fh          ;reading file function
    mov cx,1            ;1 byte
    lea dx,buffer       ;into the buffer
    int 21h
    
    inc runner               
    
    cmp ax, cx          ; if reached EOF
    jnz last_string      ; then closing file
    
    cmp buffer, stringMoving
    je  endString
    
    ;continue:
    
    mov ax, 3 ; ето устанавлюєм режим
    int 10h    ;
      
    mov ax,0B800h
    mov es,ax
    inc di    
    
    ;mov ah,31
    ;mov al,1
    
    mov al, buffer
    mov es:[di], ax
    inc cx
    
    ;mov dl,buffer
    ;mov ah,2            ; 
    ;int 21h             ;
    jmp out_str
       
 
equalSize:
out_str2:
    
    mov ah,3fh          ;reading file function
    mov cx,1            ;1 byte
    lea dx,buffer       ;into the buffer
    int 21h
    
    inc runner               
    
    cmp ax, cx          ; if reached EOF
    jnz last_string2      ; then closing file
    
    cmp buffer, stringMoving
    je  endString2
   
    ;continue:
    
    ;mov dl,buffer
    ;mov ah,2            ; 
    ;int 21h             ;
    jmp out_str2
    
    
endString2:
    cmp runner, Size
    jne init_runner2
    inc count         
init_runner2:    
    mov runner, 0
    
    jmp out_str2
      
last_string2:
    cmp runner, Size
    jne close_file 
    inc count
    jmp close_file
 
 
 
 
    
endString:
    cmp runner, 2
    je  init_runner
    inc count         
init_runner:    
    mov runner, 0
    
    jmp out_str
      
last_string:
    cmp runner, 2
    je close_file
    inc count   
close_file:    
    mov ah, 3eh
    ;mov bx, handle
    int 21h
    
        
    err:
    
    mov ax, 4c00h ; exit to operating system.
    int 21h    
ends
 
end start ; set entry point and stop the assembler.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2011, 23:10
Ответы с готовыми решениями:

Видеобуфер
помогите нубу прошу: введеное с клавиатуры надо переслать из одного сегмента...

Вывод символа через видеобуфер
Запускаю на ассемблере следующий код: CSEG segment org 100h _beg: mov...

Прямое отображение текста в видеобуфер
Начал учить ассемблер по книге Калашникова "Ассемблер? Это просто!". Все...

Не получается прямой вывод в видеобуфер
ПОДСКАЖИТЕ, ПОЖАЛУЙСТА, как произвести прямой вывод в видеобуфер. Заношу данные...

DOS: записать сообщение прямо в видеобуфер
Кто примером подскажет куда писать данные чтобы прямо в видеобуфер попасть, ну...

3
Vadimych
635 / 478 / 12
Регистрация: 10.01.2011
Сообщений: 1,047
22.05.2011, 06:58 2
ignisdivine, каждая повторная установка видео-режима очищает экран. Строки 69,70.
1
ignisdivine
4 / 4 / 0
Регистрация: 27.03.2011
Сообщений: 38
22.05.2011, 11:55  [ТС] 3
Спасибо, исправил. А как осуществлять переход на новую строку со сдвигом курсора в начало?
0
Vadimych
635 / 478 / 12
Регистрация: 10.01.2011
Сообщений: 1,047
22.05.2011, 13:03 4
При прямом выводе в видео-буфер позиция курсора не играет роли. Значение di определяет новую позицию символа. А вообще установить курсор можно с помощью функции 2 int 10h, dh,dl - строка, колонка, bh - видео-страница.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2011, 13:03

При записи в видеобуфер не выводится текст
.model small .stack 100h .data oldint dd ? .code start: mov ax,...

программа вывода символов от А до Z в видеобуфер с задействованием цикла
нужен исходник на TASM под DOS

Вывод строки в видеобуфер, и копирование в разные сегменты
Здравствуйте. Есть следующее задание. Нужно строку с символами (у меня она...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru