⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lib86.t

📁 操作系统设计与实现源码
💻 T
📖 第 1 页 / 共 5 页
字号:
.fp 5 CW LucidaT   .\" To use a font other than Lucida, change 'LucidaT'.po .9i.lg 0.nf.ec `.ps 7.vs 9.lt 5.25i`f5.nr Tb `w'0'.nr Fp 0.ta 9u*`n(Tbu 17u*`n(Tbu 25u*`n(Tbu 33u*`n(Tbu 41u*`n(Tbu 49u*`n(Tbu 57u*`n(Tbu 65u*`n(Tbu 73u*`n(Tbu 81u*`n(Tbu.de Op .if ``n(Fp>0 .bp.nr Fp 1.sp 0.75i.tl '``fR``s10MINIX SOURCE CODE``s0'``s11File: ``$2``s0``fP'``fB``s12``n%``s0``fP'.sp 0.25i...de Ep .if ``n(Fp>0 .bp.sp 0.75i.tl '``fB``s12``n%``s0``fP``fR'``s11File: ``$2'``s0``s10MINIX SOURCE CODE``s0``fP'.nr Fp 1.sp 0.25i...Op 1 src/lib/i86/em/adi.s++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i86/em/adi.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++00000	.define .adi00001	00002	        .text00003	.adi:00004	        pop     bx 00005	        cmp     cx,#200006	        jne     1f00007	        pop     cx00008	        add     ax,cx00009	        jmp     (bx)00010	1:00011	        cmp     cx,#400012	        jne     9f00013	        pop     dx00014	        pop     cx00015	        add     ax,cx00016	        pop     cx00017	        adc     dx,cx00018	        push    dx00019	        jmp     (bx)00020	9:00021	.extern .trpilin00022	        push    bx00023	        jmp     .trpilin++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i86/em/and.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++00100	.define .and00101	00102	        ! #bytes in cx00103	        ! save di; it might be a register variable00104	00105	        .text00106	.and:00107	        pop     bx              ! return address00108	        mov     dx,di00109	        mov     di,sp00110	        add     di,cx00111	        sar     cx,#100112	1:00113	        pop     ax00114	        and     ax,(di)00115	        stos00116	        loop    1b00117	        mov     di,dx00118	        jmp     (bx).Ep 2 src/lib/i86/em/blm.s++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i86/em/blm.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++00200	.define .blm00201	.text00202	00203	        ! cx: count in words00204	.blm:00205	        mov     bx,sp00206	        mov     ax,si00207	        mov     dx,di00208	        mov     di,2(bx)00209	        mov     si,4(bx)00210	        rep00211	        mov00212	        mov     si,ax00213	        mov     di,dx00214	        ret     4++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i86/em/cii.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++00300	.define .cii00301	00302	.text00303	.cii:00304	        pop     bx              ! return address00305	                                ! pop     cx, dest. size00306	                                ! pop     dx, src. size00307	                                ! ax is first word of source00308	        cmp     dx,#100309	        jne     2f00310	        cbw00311	        mov     dx,#200312	2:00313	        cmp     dx,cx00314	        je      8f00315	        cmp     dx,#200316	        je      1f00317	        cmp     dx,#400318	        jne     9f00319	        cmp     cx,#200320	        jne     9f00321	        pop     dx00322	8:00323	        jmp     (bx)00324	1:00325	        cmp     cx,#400326	        jne     9f00327	        cwd00328	        push    dx00329	        jmp     (bx).Op 3 src/lib/i86/em/cii.s00330	9:00331	        push    ax              ! push low source00332	EILLINS = 1800333	.extern .fat00334	        mov     ax,#EILLINS00335	        push    ax00336	        jmp     .fat++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i86/em/cmi4.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++00400	.define .cmi400401	00402	.text00403	.cmi4:00404	        pop     bx              ! return address00405	        pop     cx00406	        pop     dx00407	        pop     ax00408	        push    si00409	        mov     si,sp00410	        xchg    bx,2(si)00411	        pop     si00412	        cmp     bx,dx00413	        jg      1f00414	        jl      2f00415	        cmp     ax,cx00416	        ja      1f00417	        je      3f00418	2:00419	        mov     ax,#-100420	        ret00421	3:00422	        xor     ax,ax00423	        ret00424	1:00425	        mov     ax,#100426	        ret++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i86/em/cms.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++00500	.define .cms00501	00502	        ! #bytes in cx00503	        .text00504	.cms:00505	        pop     bx              ! return address00506	        mov     dx,sp00507	        push    si00508	        push    di00509	        mov     si,dx.Ep 4 src/lib/i86/em/cms.s00510	        add     dx,cx00511	        mov     di,dx00512	        add     dx,cx00513	        sar     cx,#100514	        repe00515	        cmp00516	        je      1f00517	        inc     cx00518	1:00519	        pop     di00520	        pop     si00521	        mov     sp,dx00522	        jmp     (bx)++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i86/em/cmu4.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++00600	.define .cmu400601	00602	.text00603	.cmu4:00604	        pop     bx              ! return address00605	        pop     cx00606	        pop     dx00607	        pop     ax00608	        push    si00609	        mov     si,sp00610	        xchg    bx,2(si)00611	        pop     si00612	        cmp     bx,dx00613	        ja      1f00614	        jb      2f00615	        cmp     ax,cx00616	        ja      1f00617	        je      3f00618	2:00619	        mov     ax,#-100620	        ret00621	3:00622	        xor     ax,ax00623	        ret00624	1:00625	        mov     ax,#100626	        ret.Op 5 src/lib/i86/em/com.s++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i86/em/com.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++00700	.define .com00701	00702	        ! #bytes in cx00703	        .text00704	.com:00705	        mov     bx,sp00706	        inc     bx00707	        inc     bx00708	        sar     cx,#100709	1:00710	        not     (bx)00711	        inc     bx00712	        inc     bx00713	        loop    1b00714	        ret++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i86/em/csa2.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++00800	.define .csa200801	00802	.text00803	.csa2:00804	                                ! bx, descriptor address00805	                                ! ax, index00806	        mov     dx,(bx)         ! default00807	        sub     ax,2(bx)00808	        cmp     ax,4(bx)00809	        ja      1f00810	        sal     ax,#100811	        add     bx,ax00812	        mov     bx,6(bx)00813	        test    bx,bx00814	        jnz     2f00815	1:00816	        mov     bx,dx00817	        test    bx,bx00818	        jnz     2f00819	ECASE = 2000820	.extern .fat00821	        mov     ax,#ECASE00822	        push    ax00823	        jmp     .fat00824	2:00825	        jmp     (bx).Ep 6 src/lib/i86/em/csa4.s++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i86/em/csa4.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++00900	.sect .text; .sect .rom; .sect .data; .sect .bss00901	.define .csa400902	00903	.sect .text00904	.csa4:00905	                                ! bx, descriptor address00906	                                ! ax, dx: index00907	        mov     cx,(bx)         ! default00908	        sub     ax,2(bx)00909	                                ! ignore high order word; if non-zero, the00910	                                ! case descriptor would not fit anyway00911	        cmp     ax,6(bx)00912	        ja      1f00913	2:00914	        sal     ax,#100915	        add     bx,ax00916	        mov     bx,10(bx)00917	        test    bx,bx00918	        jnz     2f00919	1:00920	        mov     bx,cx00921	        test    bx,bx00922	        jnz     2f00923	ECASE = 2000924	.extern .fat00925	        mov     ax,#ECASE00926	        push    ax00927	        jmp     .fat00928	2:00929	        jmp     (bx)++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i86/em/csb2.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++01000	.define .csb201001	01002	.text01003	.csb2:01004	                                !bx, descriptor address01005	                                !ax,  index01006	        mov     dx,(bx)01007	        mov     cx,2(bx)01008	1:01009	        add     bx,#401010	        dec     cx01011	        jl      4f01012	        cmp     ax,(bx)01013	        jne     1b01014	        mov     bx,2(bx).Op 7 src/lib/i86/em/csb2.s01015	2:01016	        test    bx,bx01017	        jnz     3f01018	ECASE = 2001019	.extern .fat01020	        mov     ax,#ECASE01021	        push    ax01022	        jmp     .fat01023	3:01024	        jmp     (bx)01025	4:01026	        mov     bx,dx01027	        jmp     2b++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i86/em/csb4.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++01100	.sect .text; .sect .rom; .sect .data; .sect .bss01101	.define .csb401102	01103	.sect .text01104	.csb4:01105	                                !bx: descriptor address01106	                                !ax, dx:  index01107	        push    (bx)            ! default01108	        mov     cx,2(bx)        ! count (ignore high order word, the descriptor01109	                                ! would not fit anyway)01110	1:01111	        add     bx,#601112	        dec     cx01113	        jl      4f01114	        cmp     ax,(bx)01115	        jne     1b01116	        cmp     dx,2(bx)01117	        jne     1b01118	        pop     bx01119	        mov     bx,4(bx)01120	2:01121	        test    bx,bx01122	        jnz     3f01123	ECASE = 2001124	.extern .fat01125	        mov     ax,#ECASE01126	        push    ax01127	        jmp     .fat01128	3:01129	        jmp     (bx)01130	4:01131	        pop     bx01132	        jmp     2b.Ep 8 src/lib/i86/em/cuu.s++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i86/em/cuu.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++01200	.define .ciu01201	.define .cui01202	.define .cuu01203	01204	.text01205	.ciu:01206	.cui:01207	.cuu:01208	        pop     bx              ! return address01209	                                ! pop     cx, dest. size01210	                                ! pop     dx, source size01211	                                ! ax is low word of source01212	        cmp     dx,cx01213	        je      8f01214	        cmp     dx,#201215	        je      1f01216	        cmp     dx,#401217	        jne     9f01218	        cmp     cx,#201219	        jne     9f01220	        pop     dx01221	8:01222	        jmp     (bx)01223	1:01224	        cmp     cx,#401225	        jne     9f01226	        xor     dx,dx01227	        push    dx01228	        jmp     (bx)01229	9:01230	        push    ax              ! to help debugging ?01231	EILLINS = 1801232	.extern .fat01233	        mov     ax,#EILLINS01234	        push    ax01235	        jmp     .fat++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i86/em/dup.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++01300	.define .dup01301	01302	        ! #bytes in cx01303	        .text01304	.dup:01305	        pop     bx              ! return address01306	        mov     ax,si01307	        mov     dx,di01308	        mov     si,sp01309	        sub     sp,cx.Op 9 src/lib/i86/em/dup.s01310	        mov     di,sp01311	        sar     cx,#101312	        rep01313	        mov01314	        mov     si,ax01315	        mov     di,dx01316	        jmp     (bx)++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i86/em/dvi4.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -