yz. db 0dh,0ah,'$'str2 db 'there are some newspapers on the table.' 预设一段字母there are some
newspapers on the table. db 0dh,0ah,'$'str3 db 'there are some clouds in the sky.'预设一段字母there are some clouds in
the sky. db 0dh,0ah,'$'str4 db 'she always eats her lunch at noon.' 预设一段字母she always eats her
lunch at noon. db 0dh,0ah,'$'str5 db 'i do not like autumn and winter.' 预设一段字母i do not like autumn and
winter.crlf db 0dh,0ah,'$'colondb ':','$'evensaddrdw str1,str2,str3,str4,str5countdw 0sec dw 0min dw 0hoursdw 0save_lc dw 2 dup(?)data endscode segment assume cs:code,ds:data,es:data,ss:stackmain proc far段内的程序调用start: mov ax,stackmov ss,ax mov sp,offset top
push ds 将ds入栈 sub ax,ax将ax清零 push ax 将ax入栈 mov ax,data 将data里面的数据存到ax中 mov ds,ax mov es,ax
mov ah,0mov al,4int 21hmov ah,0bhmov bh,0mov bl,4int 11h mov ah,35h mov al,09h int 21h mov oldcs9,es mov oldip9,bx
push ds mov dx,seg kbint mov ds,dx mov dx,offset kbint mov al,09h mov ah,25h int 21h pop ds
mov ah,35h mov al,1ch int 21h mov save_lc,bx mov save_lc+2,es
push ds mov dx,seg clint mov ds,dx mov dx,offset clint mov al,1ch mov ah,25h int 21h pop ds
in al,21h and al,11111100b out 21h,alfirst: mov ah,0 mov al,3 int 10h
mov dx,offset prompt mov ah,9 int 21h
mov si,0next:mov dx,saddr[si] mov ah,09h int 21h
mov count,0 mov sec,0 mov min,0 mov hours,0
stiforever: call kbget test kbflag,80h jnz endint push ax call dispchar pop ax cmp al,0dh jnz forever mov al,0ah call dispchar
call disptime lea dx,crlf mov ah,09h int 21h add si,2 cmp si,5*2 jne next jmp firstendint: cli push ds mov dx,save_lc mov ax,save_lc+2 mov ds,ax mov al,1ch mov ah,25h int 21h pop ds
push ds mov dx,oldip9 mov ax,oldcs9 mov ds,ax mov al,09h mov ah,25h int 21h pop ds
sti retmain endpclintproc near push ds mov bx,data mov ds,bx
lea bx,count inc word ptr[bx] cmp word ptr[bx],18 jne return call inctadj: cmp hours,12 jle return sub hours,12return: pop ds sti iretclintendpinct proc near mov word ptr[bx],0 add bx,2 inc word ptr[bx] cmp word ptr[bx],60 jne exit call inctexit:retinct endpdisptime proc near mov ax,min call bindec
mov bx,0 mov al,':' mov ah,0eh int 10h mov ax,sec call bindec
mov bx,0 mov al,':' mov ah,0eh int 10h
mov bx,count mov al,55d mul bl call bindec
retdisptime endpbindec proc near mov cx,100d call decdiv mov cx,10d call decdiv mov cx,1 call decdiv retbindec endpdecdiv proc near mov dx,0div cx
mov bx,0 add al,30h mov ah,0eh int 10h
mov ax,dx retdecdiv endpkbgetproc near push bx cli mov bx,bufpt1 cmp bx,bufpt2 jnz kbget2 cmp kbflag,0 jnz kbget3 sti pop bx jmp kbgetkbget2: mov al,[buffer+bx] inc bx cmp bx,16h jc kbget3 mov bx,0kbget3: mov bufpt1,bx pop bx retkbgetendpkbintproc near push bx push ax
in al,60h push ax in al,61h or al,80h out 61h,al and al,7fh out 61h,al
pop ax test al,80h jnz kbint2 mov bx,offset scantab xlat scantab cmp al,0 jnz kbint4 mov kbflag,80h jmp kbint2kbint4: mov bx,bufpt2 mov [buffer+bx],al inc bx cmp bx,16h jc kbint3 mov bx,0kbint3: cmp bx,bufpt1 jz kbint2 mov bufpt2,bxkbint2: cli mov al,20h out 20h,al pop ax pop bx sti iretkbintendpdispchar proc near push bx mov bx,0 mov ah,0eh int 10h pop bx retdispchar endpcode ends end start
DATAS SEGMENTtimu db "ababaabbba"
daan db 10 dup (?)
此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
lea si,timu
lea di,daan
mov cx,11
l1:
mov ah,2h
int 21h
mov dl,[si]
inc si
loop l1
mov ah,2h
mov dl,20h
int 21hspace
mov cx,10
l2:
mov ah,1h
int 21h
mov [di],al
inc di
loop l2
lea si,timu
lea di,daan
mov bl,0h
mov cx,10
l4:
mov ah,[si]
mov al,[di]
cmp ah,al
jnz l3
inc bl
l3:
inc si
inc di
loop l4
mov ah,2h
mov dl,20h
int 21hspace
add bl,30h
mov ah,2h
mov dl,bl
int 21h
mov ah,1h
int 21h
此处输入代码段代码
MOV AH,4CH
INT 21H
CODES ENDS
END START
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)