Проблема с выводом строки в 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