µÚ2Ìâ¶ÑÕ»½ØÍ¼
µÚ2Ìâ¼Ä´æÆ÷½ØÍ¼
Îå. ʵÑéÌå»á
ÔÚÕâÒ»´ÎµÄʵÑéµ±ÖУ¬ÎÒѧµ½Á˵ØÖ·±íÒÔ¼°×ªÒƱíµÄÓ¦Óã¬Í¬Ê±Ò²Ñ§µ½ÁË×Ó³ÌÐòµÄʹÓá£
ʵÑéËÄ »ã±àÓïÑԸ߼¶±à³ÌרÌâ
Ò». ʵÑéÄ¿µÄ
1¡¢»ã±àÓïÑÔºê³ÌÐòÉè¼Æ£»
2¡¢ ÕÆÎÕÖжϷþÎñ×Ó³ÌÐòµÄ±àд¡£ 3¡¢ »ã±àÓïÑÔÓë¸ß¼¶ÓïÑԵĻì±à¡£
¶þ. ʵÑéÄÚÈÝ
1¡¢±àдһ¸öºê£¬ÇóÈý¸öÊýµÄ×îСÊý£¬ÔÐÍΪ£ºMIN3 x,y,z,min 2¡¢¹Ò½Ó1CHÖжϣ¬Õý¼ÆÊ±60ÃëºóÍ˳ö¡£ÒªÇóÆÁÄ»ÏÔʾ0-59µÄÃëÊý¡£ 3¡¢VC++ÖбàдÄÚÁª»ã±à£¬½«×Ö½ÚÊý×éµÄÿ¸öÔªËØ¸ßµÍËÄ뻥»»¡£ char dbyte[] = {0x34,0x45,0x56,0x67,0xaf};
Èý. ʵÑé¹ý³ÌºÍ³ÌÐò 1.
MIN3 macro x,y,z,min
code segment
assume cs:code,ds:data
start: mov ax,data
mov ax,x cmp ax,y jl next0 mov ax,y jl down0 mov ax,z
mov min,ax endm x dw 13 y dw 15 z dw 16 min dw ?
next0: cmp ax,z
down0:
data segment
data ends
mov ds,ax
MIN3 x,y,z,min
mov bx,min mov ch,4 mov cl,4
rol bx,cl mov al,bl and al,0fh cmp al,0ah jl next
add al,37h ;\jmp down
add al,30h ;\mov dl,al
again:
next: 2.
down:
mov ah,2 int 21h dec ch jnz again
mov ah,4ch int 21h end start
code ends
;»ã±à ¹Ò½Ó1CHÖжϣ¬Õý¼ÆÊ±60ÃëºóÍ˳ö DATA SEGMENT
OLDISR DW ?,? TIMER DB 100 COUNTER DW 0 ISDONE DB 0
DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA MOV DS,AX MOV AX,0 MOV ES,AX CLI
START: MOV AX,DATA
MOV AX,ES:[1CH*4] ;±£´æÔÖжÏÏòÁ¿ MOV OLDISR[0],AX MOV AX,ES:[1CH*4+2] MOV OLDISR[2],AX
MOV WORD PTR ES:[1CH*4],OFFSET ISR MOV WORD PTR ES:[1CH*4+2],SEG ISR STI
DELAY:CMP ISDONE,1 JNZ DELAY CLI
MOV AX,OLDISR[0] ; »Ö¸´ÔÖжÏÏòÁ¿ MOV ES:[1CH*4],AX MOV AX,OLDISR[2] MOV ES:[1CH*4+2],AX STI
MOV AH,4CH INT 21H
ISR PROC FAR
PUSH DX PUSH AX MOV AX,DATA MOV DS,AX STI
INC TIMER ; Ö´ÐÐÐÂÖжϴ¦Àí CMP TIMER,1000/55 JB DONE MOV TIMER,0 MOV AH,2
MOV DL,0DH
;ÉèÖÃÐÂÖжÏÏòÁ¿