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
| assume cs:code,ds:data,ss:stack
stack segment
db 128 dup('?')
stack ends
data segment
db 8 dup('abcdABCD')
big db 64 dup('?')
small db 64 dup('?')
data ends
code segment
sta:
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov ax,0b800h
mov es,ax
call toBig
call toSmall
xor di,di
push di
xor si,si
call dis_play
lea si,big
mov di,160
call dis_play
lea si,small
mov di,320
call dis_play
mov ah,4ch
int 21h
toBig:
mov cx,64
lea di,big
xor si,si
again_1:
mov al,[si]
and al,0dfh
mov [di],al
inc si
inc di
loop again_1
ret
toSmall:
mov cx,64
lea di,small
xor si,si
again_3:
mov al,[si]
or al,20h
mov [di],al
inc si
inc di
loop again_3
ret
dis_play:
mov cx,64
again:
mov al,[si]
mov es:[di],al
add di,2
inc si
loop again
ret
code ends
end sta
|