鬼义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
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退