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
| assume cs:code
data segment db 10 dup(0) data ends
code segment start: mov ax,1234 mov bx,data mov ds,bx mov si,0 call change mov dh,12 mov dl,40 mov cl,71h call show
mov ax,4c00h int 21h
change: push ax push bx push cx push di push si mov di,0 d20: mov cl,10 div cl add ah,30h mov bl,al mov al,ah mov ah,0 push ax inc di mov al,bl mov ah,0 mov cx,ax jcxz d1 mov ax,cx jmp d20
d1: mov cx,di
d2: pop ax mov [si],al inc si loop d2 pop si pop di pop cx pop bx pop ax ret
show: push ax push bx push cx push dx push es push si
mov ax,0b800h mov es,ax mov ch,0 mov al,160 mul dh mov bx,ax mov al,2 mul dl add bx,ax mov al,cl mov cl,0
s1: mov ch,[si] jcxz s2 mov es:[bx],ch mov es:[bx+1],al add si,1 add bx,2 jmp s1
s2: pop si pop es pop dx pop cx pop bx pop ax ret code ends end start
|