问答题 试编写一个工作在16位空间的486段内调用子程序,实现取16位有符号数x绝对值的操作。要求:
   (1)子程序入口地址(标号):ABSX
   (2)入口参数:AX=x
   (3)出口参数:AX=|x|
   另外,再编写一个程序段,利用这个子程序,将数据段内首地址为1000H数据区的100个16位有符号数取绝对值,并将结果存放到数据段内首地址为1100H的数据区中
【正确答案】;16位取绝对值子程序
   ABSX:    CMP  AX,0    ;AX与0比较
   JGE PASS    ;若AX≥0转PASS
   NEG  AX    ;AX取负(取补)
   PASS:    RET    ;返回
   ;主程序段
   MOV  CX,100    ;置循环计数初值
   MOV  SI,0    ;置下标偏移初值
   NEXT:    MOV  AX,[SI+1000H]    ;取一数x
   CALL ABSX    ;取绝对值|x|
   MOV  [SI+1100H],AX    ;存结果
   ADD  SI,2    ;调整下标偏移
   LOOP NEXT    ;CX←CX-1,若CX≠0转NEXT
【答案解析】