lines.asm 1023 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. .model small
  2. .code
  3. org 100h
  4. start:
  5. mov ah, 0ah
  6. mov dx, offset smax
  7. int 21h
  8. mov bx, offset sreal
  9. mov bl, byte ptr [bx]
  10. mov bh, 0
  11. mov filename[bx],0
  12. mov ax, 03d00h
  13. mov dx, offset filename
  14. int 21h
  15. jc error
  16. mov di, 1
  17. mov bx, ax
  18. mov cx, 1
  19. mov dx, offset char
  20. loop1: mov ah, 3fh
  21. int 21h
  22. cmp ax, 0
  23. je fileend
  24. cmp char, 0dh
  25. jne loop1
  26. inc di
  27. jmp loop1
  28. fileend:
  29. mov ah, 3eh
  30. int 21h
  31. ; Int 2 Str
  32. mov ax, di
  33. mov si, 4
  34. mov di, 2
  35. mov cx, 10000
  36. mov word ptr numlines[0], 0D0Ah
  37. loop2: xor dx, dx
  38. div cx
  39. cmp al, 0
  40. je dbad
  41. add al, '0'
  42. mov numlines[di], al
  43. inc di
  44. dbad: PUSH dx
  45. mov ax, cx
  46. mov bx, 10
  47. xor dx, dx
  48. div bx
  49. mov cx, ax
  50. POP ax
  51. dec si
  52. jne loop2
  53. ;
  54. add al, '0'
  55. mov numlines[di], al
  56. inc di
  57. mov word ptr numlines[di], 0D0Ah
  58. mov numlines[di+2], '$'
  59. mov ah, 09h
  60. mov dx, offset numlines
  61. int 21h
  62. error:
  63. int 20h
  64. char db ?
  65. smax db 13
  66. sreal db ?
  67. filename db 14 dup (?)
  68. numlines db 10 dup (?)
  69. end start