Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > не печатается ТЕКСТ


Автор: scuter 23.11.2011, 23:22
мне надо как то напечатать текст
а потом ввод с клавиатуры
написал всё в FASM
Код

org 100h
  jmp m_st
num_graf db 'sdjhfgshdg','sdsdsdsad'
print:
  cld
  MOV AL, [CS:SI]
  mov AH, 0Eh
  int 10h
  LOOP print 
  RET
svs_t:
  mov AH, 0Eh
  int 10h
  ret
m_st:
  MOV AX, 0002H
  MOV BX, 0000H
  INT 10H
  
  MOV SI, num_graf
  MOV CX, 0010H
  MOV BX, 0
  CALL print
  
  ;JMP agensw
agensw:
  mov AX,0                   
  int 16h                    
  call svs_t
  jmp agensw 


вроди бы всё правильно,
но не работает ни как.

Автор: 500mhz 24.11.2011, 00:29
было лень думать о вашем коде, написал свой (печать текста)
Код


org 0x100
use16

start:

    mov si,txt
    call Print
    ret
txt:
    db "HELLO !",0    
    
Print:
    mov ah, 0xE    
    xor bh, bh    
    mov bl, 0x7
.nextchar:
    lodsb        
    or al,al
    jz .return
    int 10h    
    jmp .nextchar
.return:
    ret        

Автор: scuter 24.11.2011, 00:49
а зачем mov bl, 0x7

Автор: Lols 24.11.2011, 03:03
Чтоб работало. Он, в отличие от вашего, увы, зато жизнеспособен.

Автор: scuter 24.11.2011, 08:11
к сожалению пишет 2 буквы только

Автор: scuter 24.11.2011, 08:14
Lols, ты что то непонятное написл.

Автор: scuter 24.11.2011, 08:37
решил перебрать все стеки
и оно без результатно
Код

  MOV SI, FOLDEN
  MOV AL, byte [CS:SI] 
  mov AH, 0Eh
  MOV BX, 0007H
  int 10h
  MOV AL, byte [DS:SI] 
  mov AH, 0Eh
  MOV BX, 0007H
  int 10h
  MOV AL, byte [SS:SI] 
  mov AH, 0Eh
  MOV BX, 0007H
  int 10h
  MOV AL, byte [ES:SI] 
  mov AH, 0Eh
  MOV BX, 0007H
  int 10h
  MOV AL, byte [FS:SI] 
  mov AH, 0Eh
  MOV BX, 0007H
  int 10h
  MOV AL, byte [GS:SI] 
  mov AH, 0Eh
  MOV BX, 0007H
  int 10h


пишет 6 символов S 

Автор: 500mhz 24.11.2011, 10:16
в bl = цвет символа

scuter
функция 0x0e печатает 1 символ а не строку

Автор: scuter 24.11.2011, 10:48
Цитата(500mhz @  24.11.2011,  10:16 Найти цитируемый пост)

в bl = цвет символа

У МЕНЯ ВИДЕРЕЖИМ ЧЕРНОБЕЛЫЙ
Код

  MOV AX, 0002H
  MOV BX, 0000H
  INT 10H

Цитата(500mhz @  24.11.2011,  10:16 Найти цитируемый пост)

scuter
функция 0x0e печатает 1 символ а не строку

мне бы теперь хоть один символ выдрать из стека,
берёт хрен знает чего и хрен знает от куда

Автор: 500mhz 24.11.2011, 11:02
из какого нафиг стека?
в AL = ASCII код символа
Цитата

У МЕНЯ ВИДЕРЕЖИМ ЧЕРНОБЕЛЫЙ

какой номер видео режима у тебя стоит?

Автор: scuter 24.11.2011, 11:15
Цитата(500mhz @  24.11.2011,  11:02 Найти цитируемый пост)

из какого нафиг стека?
в AL = ASCII код символа
Цитата(scuter @  24.11.2011,  10:48 Найти цитируемый пост)
У МЕНЯ ВИДЕРЕЖИМ ЧЕРНОБЕЛЫЙ

какой номер видео режима у тебя стоит?


Код

;CGA (Color Graphics Adapter)
  MOV AX, 0002H ;80 x 25 чёрно-белый текстовый режим
  MOV BX, 0000H
  INT 10H

если поставить символ на прямую в AL,
то пишет нормально
Код

  mov AH, 0Eh
  mov AL, 30h
  int 10h

но если писать
Код

  lodsb
  mov AH, 0Eh
  int 10h

пишет непонятно чего и каждий раз разное.

Автор: iff 24.11.2011, 11:39
Цитата(500mhz @  24.11.2011,  11:02 Найти цитируемый пост)
из какого нафиг стека?

он имел ввиду сегментные регистры.

Автор: 500mhz 24.11.2011, 12:05
lodsb = грузит в AL из DS:SI

соответственно в SI адрес текста в ES сегмент, если у тебя СОМ файл то ES=CS

Автор: scuter 24.11.2011, 12:42
Код

org 0x100
use16
  jmp reals
graf db 'ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿'
print:
  cld
  mov AH, 0Eh
  MOV BX, 0007H
BEKN:
  lodsb
  CMP AL,0
  JE OFF_PR
  int 10h
  LOOP BEKN
OFF_PR:
  RET
svs_t:
  mov AH, 0Eh
  int 10h
  ret
reals:
  MOV AX, 0002H
  MOV BX, 0000H
  INT 10H
  MOV SI, graf
  mov ax,cs
  mov ds, ax
  mov cx, 20h
  call print
  mov ax,es
  mov ds, ax
  mov cx, 20h
  call print
  mov ax,cs
  mov es, ax
  mov cx, 20h
  call print
agensw:
  mov AX,0                   ;wait key function number
  int 16h                    ;BIOS keyboard interrupt
  call svs_t
  jmp agensw

результат абсолютно одиниковый

Автор: 500mhz 24.11.2011, 12:55
Код

org 0x100
use16
  jmp reals
graf db 'hello',0
print:
  cld
  mov AH, 0Eh
  MOV BX, 0007H
BEKN:
  lodsb
  CMP AL,0
  JE OFF_PR
  int 10h
  jmp BEKN
OFF_PR:
  RET
svs_t:
  mov AH, 0Eh
  int 10h
  ret
reals:
  MOV AX, 0002H
  MOV BX, 0000H
  INT 10H
  MOV SI, graf
  call print
agensw:
  mov AX,0                   ;wait key function number
  int 16h                    ;BIOS keyboard interrupt
  call svs_t
  jmp agensw                                                


все печатает только что проверил
а вы батенька ленивый однако

Автор: scuter 24.11.2011, 13:49
Цитата(500mhz @  24.11.2011,  12:55 Найти цитируемый пост)

все печатает только что проверил
а вы батенька ленивый однако

на чём компилишь чем тестируешь,
пятые сутки сижу ничего не срабатывает.

Автор: 500mhz 24.11.2011, 13:56
fasm + winxp

Автор: scuter 24.11.2011, 14:50
Цитата(500mhz @  24.11.2011,  13:56 Найти цитируемый пост)
fasm + winxp

ты меня обрадоват,

только у меня стоит Windows 7 и проц у меня 64-х битный
и запускаю я это все на виртуальной машине, а файл .com запускается как boot файл

Автор: 500mhz 24.11.2011, 16:00
разницы никакой

Автор: scuter 24.11.2011, 16:25
Цитата(500mhz @  24.11.2011,  16:00 Найти цитируемый пост)
разницы никакой


Автор: 500mhz 24.11.2011, 16:33
ну правильно , win7 не поддерживает дос эмуляцию

на последнем моем скриншоте тест в виртуальной машине, все работает.

Автор: scuter 24.11.2011, 17:15
Цитата(scuter @  24.11.2011,  14:50 Найти цитируемый пост)

только у меня стоит Windows 7 и проц у меня 64-х битный
и запускаю я это все на виртуальной машине, а файл .com запускается как boot файл

Цитата(500mhz @  24.11.2011,  16:00 Найти цитируемый пост)
разницы никакой

Цитата(500mhz @  24.11.2011,  16:33 Найти цитируемый пост)
ну правильно , win7 не поддерживает дос эмуляцию


Цитата(500mhz @  24.11.2011,  16:33 Найти цитируемый пост)
на последнем моем скриншоте тест в виртуальной машине, все работает.

вот именно этому я и обрадовался (спасибо что подсказал).

мне только всё равно надо запускать всё это дело с нулевого режима.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)