Проблема с выводом строки в Assembler

Пытаюсь вывести посимвольно строку my_str, через td проверил, что правильно получаю адрес на my_str, но по какой-то причине в регистр dl не записываются значения по адресу, а просто пустые символы. Помогите разобраться, уже не знаю, что делать? Компилирую с помощью tasm и tlink под exe, листинг и код прикладываю.

mycode segment 'code'
assume cs:mycode, ds:mycode         
push cs
pop ds
start:
call clrscr
text:
call clrf   
mov dl, 'Ђ'
call putch
call clrf
mov dl, 'Ѓ'
call putch
call clrf
mov dl, '‚'
call putch
call clrf   
call getch
cmp al, 'r'
je text     
//здесь начинается часть кода с посимвольным выводом строки                                                                                 
mov si, offset my_str
mov cx, 6
mov ah, 02h
surname:
mov dl, [si]
int 21h
inc si                                  
loop surname
call getch  
call clrscr
mov al, 00h
mov ah, 4ch
int 21h
­
putch proc
mov ah, 02h
int 21h
ret
putch endp

getch proc  
mov ah, 08h
int 21h
mov ah, 02h
mov dl, al
int 21h
ret
getch endp

clrf proc
mov dl, 0Ah
call putch
mov dl, 0Dh
call putch
ret
clrf endp
 ­ 
clrscr proc
mov ah, 00h                 
int 10h
ret
clrscr endp
my_str db 'Admin', 0
mycode ends
end start
  1 0000                 mycode segment 'code'
  2                  ;
  3                  assume cs:mycode, ds:mycode
  4 0000  0E             push cs
  5 0001  1F             pop ds
  6 0002                 start:
  7 0002  E8 0058            call clrscr
  8                  ;
  9 0005                 text:
 10 0005  E8 004A            call clrf
 11 0008  B2 80          mov dl, 'Ђ'
 12 000A  E8 0035            call putch
 13 000D  E8 0042            call clrf
 14 0010  B2 81          mov dl, 'Ѓ'
 15 0012  E8 002D            call putch
 16 0015  E8 003A            call clrf
 17 0018  B2 82          mov dl, '‚'
 18 001A  E8 0025            call putch
 19 001D  E8 0032            call clrf
 20 0020  E8 0024            call getch
 21                  ;
 22 0023  3C 72          cmp al, 'r'
 23                  ;
 24 0025  74 DE          je text
 25                  ;
 26 0027  BE 0062r           mov si, offset my_str
 27 002A  B9 0006            mov cx, 6
 28 002D  B4 02          mov ah, 02h
 29 002F                 surname:
 30 002F  8A 14          mov dl, [si]
 31 0031  CD 21          int 21h
 32 0033  46             inc si
 33 0034  E2 F9          loop surname
 34 0036  E8 000E            call getch
 35                  ;
 36 0039  E8 0021            call clrscr
 37 003C  B0 00          mov al, 00h
 38 003E  B4 4C          mov ah, 4ch
 39 0040  CD 21          int 21h
 40                  ; ­
 41 0042                 putch proc
 42 0042  B4 02          mov ah, 02h
 43 0044  CD 21          int 21h
 44 0046  C3             ret
 45 0047                 putch endp
 46                  ;
 47 0047                 getch proc
 48 0047  B4 08          mov ah, 08h
 49 0049  CD 21          int 21h
 50 004B  B4 02          mov ah, 02h
 51 004D  8A D0          mov dl, al
 52 004F  CD 21          int 21h
 53 0051  C3             ret
 54 0052                 getch endp
 55                  ;
 56 0052                 clrf proc
 57 0052  B2 0A          mov dl, 0Ah
 58 0054  E8 FFEB            call putch
 59 0057  B2 0D          mov dl, 0Dh
 60 0059  E8 FFE6            call putch
 61 005C  C3             ret
 62 005D                 clrf endp
 63                  ; ­ 
 64 005D                 clrscr proc
 65 005D  B4 00          mov ah, 00h
 66 005F  CD 10          int 10h
 67 0061  C3             ret
 68 0062                 clrscr endp
 69 0062  41 64 6D 69 6E 00      my_str db 'Admin', 0
 70 0068                 mycode ends
 71                  end start

Ответы (0 шт):