📄 skipnlcr.$
字号:
_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 .TEXTARGSIZ = 128argstart: MOV BP,SP CMP (BP),2 JNE 9f POP (argc) CALL getargs PUSH 1 PUSH bufagain: PUSH (infildes) PUSH _READ SYS CMP AX,1 JL 8f ADD SP,4 CMPB (buf),'\015' JE 7fbufput: PUSH (outfldes) PUSH _WRITE SYS CMP AX,1 JL 3f ADD SP,4 JMP again9: PUSH noargserrprt: PUSH _PRINTF SYS8: PUSH 0 PUSH _EXIT SYS 7: PUSH 1 PUSH xbuf PUSH (infildes) PUSH _READ SYS CMP AX,1 JGE 1f ADD SP,8 JMP bufput1: CMPB (xbuf),'\012' JNE 5f ADD SP,4 PUSH (outfldes) PUSH _WRITE SYS CMP AX,1 JL 3f ADD SP,8 JMP again5: ADD SP,8 PUSH (outfldes) PUSH _WRITE SYS CMP AX,1 JL 3f PUSH 1 PUSH xbuf PUSH (outfldes) PUSH _WRITE SYS ADD SP,12 JMP again3: PUSH wrerr JMP errprtgetargs: MOV SI,2 MOV BX,argv1 MOV CX,(argc)1: MOV AX,(BP)(SI) PUSH BP MOV BP,AX ADD SI,2 MOV DI,02: MOVB AL,(BP)(DI) MOVB (BX)(DI),AL INC DI CMPB AL,0 JNE 2b ADD BX,ARGSIZ POP BP LOOP 1b PUSH 0 PUSH argv1 PUSH _OPEN SYS CMP AX,0 JL 9f MOV (infildes),AX PUSH 0644 PUSH argv2 PUSH _CREAT SYS CMP AX,0 JL 8f MOV (outfldes),AX ADD SP,12 RET8: ADD SP,2 PUSH crerr JMP errprt9: ADD SP,2 PUSH operr JMP errprt .SECT .DATAnoargs: .ASCIZ "Program skipnlcr expects two file arguments\n"wrerr: .ASCIZ "Program skipnlcr encoutered a write error\n"crerr: .ASCIZ "Program skipnlcr cannot creat file %s\n"operr: .ASCIZ "Program skipnlcr cannot open file %s\n".ALIGN 2.SECT .BSSinfildes: .SPACE 2outfldes: .SPACE 2argc: .SPACE 2argv1: .SPACE 128argv2: .SPACE 128buf: .SPACE 20xbuf: .SPACE 20
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -