ASM
     push bx //此行汇编必须要有,且在第一行
     mov ax,0ffh
     add ax,033h
     pop bx //必须恢复BX寄存器,否则系统出现不可预料的错误,小心当机。
  END; 

解决方案 »

  1.   

    保存和恢复bx可能是老版本delphi里的事情了,现在好象没必要。
    汇编函数后面都带register指示附,比如:
    functin addIt(a,b: integer): integer; register
    asm 
      mov eax a
      add eax,b
    end;  关于返回值类型的规则是:能装多大的积存器返回什么值。Delphi帮助里有说明。
    函数参数默认都是[EBP - 4] 是第一个参数,[EBP - 8]是第二个参数等。
    但很重要的一个规则是:EAX积存器总指象第一个参数a,EDX积存器总指象第二个参数b,ECX积存器总指象第3个参数,其他的用[EBP - 4*n]方法即可存取。
      可以参考System.TObject.ClassName等方法。
      

  2.   

    直接在过程或者在函数据里使用汇编语言即可呀:
    asm  .........end
      procedure abc(achar:char;n:word);
      var cc:char;
      begin
        cc:=achar;
        asm
          mov dx,n
          mov al,cc
          mov ah,1
          int 14h
        end;
      end;