lar2.s 498 B

1234567891011121314151617181920212223242526272829303132333435
  1. .sect .text; .sect .rom; .sect .data; .sect .bss
  2. .sect .text
  3. .define .lar2
  4. .lar2:
  5. ! bx, descriptor address
  6. ! ax, index
  7. pop cx
  8. pop dx ! base address
  9. push cx
  10. push si
  11. mov si,dx
  12. sub ax,(bx)
  13. mov cx,4(bx)
  14. imul cx
  15. add si,ax
  16. sar cx,1
  17. jnb 1f
  18. xorb ah,ah
  19. lodsb
  20. pop si
  21. pop bx
  22. push ax
  23. jmp bx
  24. 1:
  25. pop dx ! saved si
  26. mov ax,4(bx)
  27. pop bx ! return address
  28. sub sp,ax
  29. mov ax,di ! save di
  30. mov di,sp
  31. rep movs
  32. mov di,ax
  33. mov si,dx
  34. jmp bx