使用INT 12获取内存大小

时间:2013-08-06 14:56:39

标签: memory kernel nasm interrupt

我希望在程序集中使用int 12获取内存大小,但是当我调用此中断时它只给出639. 639是什么意思? (我从整数转换为字符串)

例如:

  bits 16
  org 0x0

  start:
  int 12h;GET MEMORY TO AX (KB)
  mov bx,ax ;BX=AX
  call int_to_str ;IN:BX(INT)-OUT:BX(STRING)
  mov si,bx  ;SI=BX
  call print_string  ;PRINT SI
  mov ax,10h  ;KEY STROKE
  int 16h
  ret

此代码仅提供639.我还不明白。请帮忙。谢谢!

1 个答案:

答案 0 :(得分:0)

INT 12h仅报告第一个640KB的内存。你的程序占用了一个1KB的块,因此它返回了639.获取可用内存有点棘手。有关详细信息,请参阅here