Na source que a MS disponibilizou eu achei algo curioso em um dos Assume:
Por que eles usam três SHL AX,1 ao invés de um SHL AX, 3? Alguém sabe?
Código:
ASSUME DS:DOSGROUP POP BX POP SI MOV AX,WORD PTR [TIMEBUF] MOV CX,WORD PTR [TIMEBUF+2] MOV DX,WORD PTR [TIMEBUF+4] CMP AX,[DAYCNT] ;See if day count is the same JZ RET22 CMP AX,FOURYEARS*30 ;Number of days in 120 years JAE RET22 ;Ignore if too large MOV [DAYCNT],AX PUSH SI PUSH CX PUSH DX ;Save time XOR DX,DX MOV CX,FOURYEARS ;Number of days in 4 years DIV CX ;Compute number of 4-year units SHL AX,1 SHL AX,1 SHL AX,1 ;Multiply by 8 (no. of half-years) MOV CX,AX ;<240 implies AH=0 MOV SI,OFFSET DOSGROUP:YRTAB ;Table of days in each year CALL DSLIDE ;Find out which of four years we're in SHR CX,1 ;Convert half-years to whole years JNC SK ;Extra half-year? ADD DX,200
Comment