数据块间的数据传送程序

数据块移动。将一个连续存储单元的数据移动到另一个连续的存储单元,并找出其中零的个数并显示出来。(注意在编程的时候要确保数据块位置的不确定性)

 1 DATA    SEGMENT

 2 ORG    $+20H

 3 VA    DB    '2014001002003004'    ;数据块

 4 LEN    EQU    $-VA            ;数据块长度

 5 V1    DW    VA            ;源块首址

 6 V2    DW    VA+1            ;目的块首址

 7 DATA    ENDS

 8 STACK1    SEGMENT    STACK

 9     DW    20H    DUP(0)

10 STACK1    ENDS

11 CODE    SEGMENT

12     ASSUME    CS:CODE,DS:DATA,SS:STACK1

13 START:    MOV    AX,DATA

14     MOV    DS,AX

15     MOV    BL,30H            ;设置计数器(计0个数)

16     MOV    CX,LEN            ;设置计数器(传送条件)

17     MOV    SI,V1            ;SI指向源块首址

18     MOV    DI,V2            ;DI指向目的块首址

19     CMP    SI,DI            ;比较两块首址,选择不同传送方式

20     JA    J2

21     ADD    SI,LEN-1

22     ADD    DI,LEN-1

23 J1:    MOV    AL,[SI]

24     MOV    [DI],AL

25     CMP    AL,30H

26     JNE    J01

27     INC    BL

28 J01:    DEC    SI

29     DEC    DI

30     DEC    CX

31     JNE    J1

32     JMP    DONE

33 J2:    MOV    AL,[SI]

34     MOV    [DI],AL

35     CMP    AL,30H

36     JNE    J02

37     INC    BL

38 J02:    INC    SI

39     INC    DI

40     DEC    CX

41     JNE    J2

42 DONE:    MOV    AH,2            ;显示0个数

43     MOV    DL,BL

44     INT    21H

45     MOV    AH,4CH            ;return DOS

46     INT    21H

47 CODE    ENDS

48     END    START
View Code

两种传送方式分别对应两种情况。

你可能感兴趣的:(数据)