head_em.s 944 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. .sect .text; .sect .rom; .sect .data; .sect .bss
  2. .define begtext,begdata,begbss
  3. .define hol0,.reghp,.limhp,.trppc,.ignmask
  4. .define ERANGE,ESET,EHEAP,ECASE,EILLINS,EIDIVZ,EODDZ
  5. .define EXIT, BRK
  6. ERANGE = 1
  7. ESET = 2
  8. EIDIVZ = 6
  9. EHEAP = 17
  10. EILLINS = 18
  11. EODDZ = 19
  12. ECASE = 20
  13. .sect .text
  14. .data1 0353
  15. .data1 0176 ! jmp to begtext in 2 bytes. Assembler generates 3
  16. ! bytes.
  17. .data2 -277, -277, -277, -277
  18. .space 116
  19. .data2 49920
  20. begtext:
  21. mov (.limhp),ax
  22. mov (.reghp),ax
  23. xor bp,bp
  24. mov bx,sp
  25. mov cx,(bx)
  26. add bx,4
  27. mov ax,cx
  28. inc ax
  29. shl ax,2
  30. add ax,bx
  31. push ax
  32. push bx
  33. push cx
  34. call __m_a_i_n
  35. push ax
  36. EXIT:
  37. call __exit
  38. BRK:
  39. jmp __brk
  40. .sect .data
  41. begdata:
  42. hol0:
  43. .data2 0,0
  44. .data2 0,0
  45. argv:
  46. .data4 3f
  47. envp:
  48. .data4 0
  49. 3:
  50. .asciz "PROGRAM"
  51. .reghp:
  52. .data4 endbss
  53. .limhp:
  54. .data4 endbss
  55. .ignmask:
  56. .data4 0
  57. .trppc:
  58. .data4 0
  59. .sect .bss
  60. begbss: