鬼义II虎神 2015-12-23 08:41 采纳率: 100%
浏览 1825
已采纳

汇编语言习题求解给个答案,谢谢了

认真阅读以下代码,请判断该程序的功能及运算完成后数据区的数据排列。

DATA SEGMENT
BUF DB 0AH,8F,15H,36H,0A6,20H,12H
N = $-BUF

DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
BEGIN: MOV AX,DATA
MOV DS,AX
MOV SI,1

NEXT1: MOV DI,SI

INC DI
MOV AL,[BUF+SI-1]

NEXT2: CMP AL,[BUF+DI-1]

JAE NEXT3

XCHG [BUF+DI-1],AL

MOV [BUF+SI-1],AL
NEXT3: INC DI

CMP DI,N

JBE NEXT2

INC SI

CMP SI,N-1

JBE NEXT1

MOV AH,4CH
INT 21H
CODE ENDS
END BEGIN

  • 写回答

1条回答 默认 最新

  • wuheng_1 2015-12-24 05:49
    关注
      ;声明DATA段,声明常量数组BUF
    DATA SEGMENT
      BUF DB 0AH,8FH,15H,36H,0A6,20H,12H
      N = $-BUF
    DATA ENDS
    
      ;声明CODE段
    CODE SEGMENT
      ;设置CS指向CODE段,DS指向DATA段
      ASSUME CS:CODE,DS:DATA
      ;设置DS,SI
      BEGIN: MOV AX,DATA
      MOV DS,AX
      MOV SI,1
    
    NEXT1: 
      ;将SI的值赋给DI
      MOV DI,SI
      INC DI
      MOV AL,[BUF+SI-1]
    
    NEXT2: 
      ;比较AL,[BUF+DI-1]地址的内容
        ;若>=,则跳转到NEXT3
      CMP AL,[BUF+DI-1]
      JAE NEXT3
        ;否则互换[BUF+DI-1]地址的内容与AL的内容
      XCHG [BUF+DI-1],AL
        ;用AL的值覆盖[BUF+SI-1]地址指向的内容(还是原内容)
      MOV [BUF+SI-1],AL
    
    NEXT3:
      INC DI
        ;比较DI与N,结果为<=,跳到NEXT2
      CMP DI,N
      JBE NEXT2
      INC SI
        ;比较SI与N-1,结果为<=,跳到NEXT1
      CMP SI,N-1
      JBE NEXT1
        ;调用DOS系统4C号功能(?没找到DOS 4C号功能)
      MOV AH,4CH
      INT 21H
    CODE ENDS
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?