数据块间的数据传送程序

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

 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

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

原文地址:https://www.cnblogs.com/jiu0821/p/4157495.html