牛骨文教育服务平台(让学习变的简单)
博文笔记
  • 当前位置:
  • 牛骨文教育服务平台
  • >
  • 博文笔记
  • >
  • 汇编语言程序设计:在附加段中有一数组,数地址为BUFF,数组中第一个字存放了数组的长度。编写程序,在数组中查找0,若找到则将其从数组中删去,后续项向前压缩,其余部分补0.

汇编语言程序设计:在附加段中有一数组,数地址为BUFF,数组中第一个字存放了数组的长度。编写程序,在数组中查找0,若找到则将其从数组中删去,后续项向前压缩,其余部分补0.

创建时间:2008-05-23 投稿人: 浏览次数:1797

源程序:

DATA      SEGMENT<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

ST1  DB   50H

BUFF      DB   ?

       DB   50H DUP("0")

       DB   "$"

DATA      ENDS

 

CODE    SEGMENT

MAIN     PROC    FAR

       ASSUME CS:CODE,DS:DATA

START:    MOV      AX,DATA

       MOV      DS,AX

       MOV      AH,0AH

       MOV      DX,OFFSET ST1

       INT   21H               ;输入一串数

       MOV      AH,2

       MOV      DL,0DH

       INT   21H

       MOV      DL,0AH

       INT   21H

       MOV      CH,"0"                  ;ch中放"0"作为比较对象

       MOV      DI,OFFSET BUFF+1

       MOV      CL,BUFF               ;cl记录尚需处理的位数

       MOV      BH,0

       MOV      BL,CL

       ADD       BL,2

       MOV      [BX],CH

NEXT1:   CMP      CL,0                     ;cl0说明所有数据都处理完了

       JZ    NEXT2

       CMP      CH,[DI]                ;di指向正在处理的数

       JNZ NEXT3

       CALL      MOVES_XC

       JMP       NEXT6

NEXT3:   INC DI                  ;注意,0时只让dl1,cl不变

NEXT6:   DEC       CL

       JMP       NEXT1

NEXT2:   MOV      AH,9

       MOV      DX,OFFSET ST1+2

       INT   21H

       MOV      AH,4CH

       INT   21H

MAIN     ENDP

 

MOVES_XC  PROC

       MOV      BL,CL

       MOV      SI,DI

NEXT4:   CMP      BL,0

       JZ    NEXT5

       MOV      BH,[SI+1]

       MOV      [SI],BH

       INC SI

       DEC       BL

       JMP       NEXT4

NEXT5:   RET

MOVES_XC  ENDP

CODE    ENDS

       END       START

说明:

程序需要改进,欢迎留言提供改进方法,不胜感激.

 

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。