Wpis z mikrobloga

@8tab: Sprawa jest chyba trywialnie prosta, a ja robię pewnie gdzieś jakiś idiotyczny błąd.

Piszę program, który ma zamienić znak z klawiatury na znak zdefiniowany przez użytkownika.

format MZ

stack stk:256

entry codeseg:main

segment sdat use16

znak db 0h,0h,0h,32h,12h,24h,48h,90h,90h,48h,24h,12h,0h,0h,0h,0h

segment stk use16

db 256 dup (?)

segment codeseg use16

main:

mov ax,1100h ;podmiana

mov bx,sdat

mov ds,bx

mov es,bx

mov bp,znak

mov cx,01h

mov dx,30h

mov bl,09h

mov bh,10h

int 10h
@Trynidad: Udało Ci się już?

jak nie to spróbuj zamienić blok podmiana na:

mov bx, sdat

mov es, bx ; ustawnienie segmentu

mov bp, znak ;etykieta z danymi

mov ax, 1100h

mov bh, 16 ;ilosc lini

mov cx, 02

mov dx, 65 ;offset

xor bl,bl ;reset bl

int 10h

;;pozycja

mov ah, 03h

mov bh, 00

int 10h

Powinno zamienić literę A

Jesteś z PK? bo wygląda to znajomo ( ͡
@xim: Dzięki, ale niestety nie działa. :P

Mi się wydaje w moim kodzie wszystko logicznie poukładane - jest wywołanie odpowiedniej funkcji przerwania, ustawione parametry zamiany, adres do tablicy znaku zapisany w bp. Wyświetlanie działa, tylko nie wyświetla tego co powinno, nie podmienia znaku, tylko czemu? :p A tak w ogóle to tak PK, tylko zaoczne ()
@Trynidad: testowałem u mnie i chodziło. zamieniało mi literę A jak coś wpisałeś w konsoli. podeślę Ci moje rozwiązanie tego zadania, ale z innym znakiem
@Trynidad

format MZ

stack stk:256

entry codseg:main

;------------------ Segment danych ---------------------------

segment sdat use16

dane db 00h, 00h, 00h, $fE, 20h, 10h, 8h, 14h, 22h, 41h, 41h, 22h, 14h, 8h, 0h, 0h

;----------------- Segment stosu -----------------------------

segment stk use16

db 256 dup (?)

; koniec segmentu stosu

;----------------- Segment programu -------------------------

segment codseg use16

main:

mov bx, sdat

mov es, bx ; ustawnienie segmentu

mov bp, dane ;etykieta z danymi

mov ax,
@xim: HA! Teraz to dopiero wałek. Twój kod też mi nie działa - tzn. wyświetla 'A' w konsoli. A na jakim OSie odpalasz, ja mam viste 32 bity, to by było dziwne, ale może tu jest problem. Bo ja już nie wiem :p
W 16 bitach pewnie się nie przyda, ale w 32 i więcej - czemu nie :p Ja darzę asma sympatią i już w nim pisałem, ale cała wiedza mi wyparowała z głowy. Tak czy siak dzięki jeszcze raz za pomoc, będę pisał jeżeli znowu napotkam jakieś drzwi nie do przejścia, chociaż mam nadzieję, że to się nie zdarzy :p