Hardware Reference
In-Depth Information
#include "../syscalnr.h" ! 1
PUSH EXIT
! 43
PUSH buf
! 85
bufsiz = 512
! 2
PUSH EXIT
! 44
PUSH (fildes)
! 86
.SECT .TEXT
! 3
SYS
! 45
PUSH READ
! 87
infbufst:
! 4
3: CALL getnum
! 46
SYS
! 88
MOV BP,SP
! 5
CMP AX,0
! 47
ADD SP,8
! 89
MOV DI,linein
! 6
JLE 8f
! 48
MOV CX,AX
! 90
PUSH GETCHAR ! 7
MOV BX,(curlin)
! 49
ADD BX,CX
! 91
1: SYS
! 8
CMP BX,0
! 50
MOV DI,buf
! 92
CMPB AL,'\n'
! 9
JLE 7f
! 51
RET
! 93
JL 9f
! 10
CMP BX,(count)
! 52
JE 1f
! 11
JG 7f
! 53
getnum:
! 94
STOSB
! 12
SHL BX,1
! 54
MOV DI,linein
! 95
JMP 1b
! 13
MOV AX,linh-2(BX)
! 55
PUSH GETCHAR
! 96
1: PUSH 0
! 14
MOV CX,linh(BX)
! 56
1: SYS
! 97
PUSH linein
! 15
PUSH 0
! 57
CMPB AL,'\n'
! 98
PUSH OPEN
! 16
PUSH 0
! 58
JL 9b
! 99
SYS
! 17
PUSH AX
! 59
JE 1f
!100
CMP AX,0
! 18
PUSH (fildes)
! 60
STOSB
!101
JL 9f
! 19
PUSH LSEEK
! 61
JMP 1b
!102
MOV (fildes),AX
! 20
SYS
! 62
1: MOVB (DI),'\0'
!103
MOV SI,linh+2
! 21
SUB CX,AX
! 63
PUSH curlin
!104
MOV BX,0
! 22
PUSH CX
! 64
PUSH numfmt
!105
1: CALL fillbuf
! 23
PUSH buf
! 65
PUSH linein
!106
CMP CX,0
! 24
PUSH (fildes)
! 66
PUSH SSCANF
!107
JLE 3f
! 25
PUSH READ
! 67
SYS
!108
2: MOVB AL,'\n'
! 26
SYS
! 68
ADD SP,10
!109
REPNE SCASB
! 27
ADD SP,4
! 69
RET
!110
JNE 1b
! 28
PUSH 1
! 70
INC (count)
! 29
PUSH WRITE
! 71
.SECT .DATA
!111
MOV AX,BX
! 30
SYS
! 72
errmess:
!112
SUB AX,CX
! 31
ADD SP,14
! 73
.ASCIZ "Open %s failed\n" !113
XCHG SI,DI
! 32
JMP 3b
! 74
numfmt:
.ASCIZ "%d"
!114
STOS
! 33
8: PUSH scanerr
! 75
scanerr:
!115
XCHG SI,DI
! 34
PUSH PRINTF
! 76
.ASCIZ "Type a number.\n" !116
CMP CX,0
! 35
SYS
! 77
.ALIGN 2
!117
JNE 2b
! 36
ADD SP,4
! 78
.SECT .BSS
!118
JMP 1b
! 37
JMP 3b
! 79
linein:
.SPACE 80
!119
9: MOV SP,BP
! 38
7: PUSH 0
! 80
fildes:
.SPACE 2
!120
PUSH linein
! 39
PUSH EXIT
! 81
linh:
.SPACE 8192
!121
PUSH errmess
! 40
SYS
! 82
curlin:
.SPACE 4
!122
PUSH PRINTF
! 41
fillbuf:
! 83
buf:
.SPACE bufsiz+2
!123
SYS
! 42
PUSH bufsiz
! 84
count:
.SPACE 2
!124
Figure C-19. A program with buffered read and random file access.
Search WWH ::




Custom Search