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

📄 infilbuf.$

📁 坦尼保姆
💻 $
字号:
! Program to show file access by reading! an entire file, and storing the addresses! of the records. Afterwards these records ! can be randomly accessed by the SEEK and! READ calls. See text section 9.8.7._EXIT	   =	  1	! seven system call numbers_READ	   =	  3_WRITE	   =	  4_OPEN	   =	  5_CLOSE	   =	  6_CREAT	   =	  8_LSEEK	   =	 19_GETCHAR   =	117	! five system subroutine numbers_SPRINTF   =	121_PUTCHAR   =	122_SSCANF	   =	125_PRINTF	   =	127STDIN	   =	  0	! three initially opened file descriptorsSTDOUT	   =	  1STDERR	   =	  2.SECT .TEXT		! Definition of section header labelsTxtSecHd:.SECT .DATADatSecHd:.SECT .TEXTbufsiz	= 512			!  2.SECT .TEXT			!  3infbufst:			!  4	MOV  BP,SP		!  5	MOV  DI,filnam		!  6	PUSH _GETCHAR		!  71:	SYS			!  8	CMPB AL,'\n'		!  9	JL   9f			! 10	JE   1f			! 11	STOSB			! 12	JMP  1b			! 131:	PUSH 4			! 14	PUSH filnam		! 15	PUSH _OPEN		! 16	SYS			! 17	CMP  AX,0		! 18	JL   9f			! 19	MOV  (fildes),AX	! 20	MOV  BX,0		! 21	MOV  SI,linhed+2	! 221:	CALL vulbuf		! 23	CMP  CX,0		! 24	JLE  3f			! 252:	MOVB AL,'\n'		! 26	REPNE  SCASB		! 27	JNE  1b			! 28	INC  (count)		! 29	MOV  AX,BX		! 30	SUB  AX,CX		! 31	XCHG SI,DI		! 32	STOS			! 33	XCHG SI,DI		! 34	CMP  CX,0		! 35	JNE  2b			! 36	JMP  1b			! 379:	MOV  SP,BP		! 38	PUSH filnam		! 39	PUSH errmess		! 40	PUSH _PRINTF		! 41	SYS			! 42	PUSH _EXIT		! 43	PUSH _EXIT		! 44	SYS			! 453:	CALL getnum		! 46	CMP  AX,0		! 47	JLE  8f			! 48	MOV  BX,(curlin)	! 49	CMP  BX,0		! 50	JLE  7f			! 51	CMP  BX,(count)		! 52	JG   7f			! 53	SHL  BX,1		! 54	MOV  CX,linhed(BX)	! 55	MOV  AX,linhed-2(BX)	! 56	PUSH 0			! 57	PUSH 0			! 58	PUSH AX			! 59	PUSH (fildes)		! 60	PUSH _LSEEK		! 61	SYS			! 62	SUB  CX,AX		! 63	PUSH CX			! 64	PUSH buf		! 65	PUSH (fildes)		! 66	PUSH _READ		! 67	SYS			! 68	ADD  SP,4		! 69	PUSH 1			! 70	PUSH _WRITE		! 71	SYS			! 72	ADD  SP,14		! 73	JMP  3b			! 748:	PUSH scanerr		! 75	PUSH _PRINTF		! 76	SYS			! 77	ADD  SP,4		! 78	JMP  3b			! 797:	PUSH 0			! 80	PUSH _EXIT		! 81	SYS			! 82vulbuf:				! 83	PUSH bufsiz		! 84	PUSH buf		! 85	PUSH (fildes)		! 86	PUSH _READ		! 87	SYS			! 88	ADD  SP,8		! 89	MOV  CX,AX		! 90	ADD  BX,CX		! 91	MOV  DI,buf		! 92	RET			! 93getnum:				! 94	MOV  DI,filnam		! 95	PUSH _GETCHAR		! 961:	SYS			! 97	CMPB AL,'\n'		! 98	JL   9b			! 99	JE   1f			!100	STOSB			!101	JMP  1b			!1021:	MOVB (DI),'\0'		!103	PUSH curlin		!104	PUSH numfmt		!105	PUSH filnam		!106	PUSH _SSCANF		!107	SYS			!108	ADD  SP,10		!109	RET			!110.SECT .DATA			!111errmess:			!112.ASCIZ "Open %s failed\n"	!113numfmt:	.ASCIZ "%d"		!114scanerr:			!115.ASCIZ "No number. Try again\n"	!116.ALIGN 2			!117.SECT .BSS			!118filnam: .SPACE 80		!119fildes: .SPACE 2		!120linhed: .SPACE 8192		!121curlin: .SPACE 4		!122buf:	.SPACE bufsiz+2		!123count:  .SPACE 2		!124

⌨️ 快捷键说明

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