回 帖 发 新 帖 刷新版面

主题:大哥,大姐,帮帮忙

这个例子的功能是把block中的正数,负数分别送到两个缓冲区中去.程序如下:
data segment ;定义数据段
block db 43h,0abh ;定义block变量及其数据初值
pdata db 20 dup(?) ;定义存放正数的缓冲区
npata db 20 dup(?) ;定义存放负数的缓冲区
data ends ;数据段定义结束
code segment ;定义码段
assume cs:code ,ds:data ;确定cs,ds和对应段的关系
exp1 pro far ;定义过程
start: push ds ;保存原ds
mov ax,0 push as ;ax ;保存在堆栈
mov ax,data mov ds,ax ;数据段段址送ds,es
mov es,ax
lea si,block ;分别置偏移地址
lea di,pdata
lea bx,ndata
cld mov cx,pdata-block ;数据个数送cx
goon:lodsb ;数据送al
test al,80h
jnz minus ;判是负数,则转minus
stosb ;判是正数,送去存入缓冲器
jmp again
minus:xchg bx,di ;交换,使di中为负数缓冲器便址
stosb ;存负数
xchg bx,di ;恢复原便址寄存器
again:loop goon ;循环次数未完,则转goon
ret ;返回dos exp1 endp ;过程定义结束
code ends ;码段定义结束
end start ;汇编结束,断定入口地址


帮帮忙画一下流程图,好吗????

回复列表 (共3个回复)

沙发

开始
                                      |                                     
                                     读数《-------------------------
                ----------------------|---------------------       |
                |                                           |      |
                正数放一处                               负数放一处 |
                --------------------|-------------------------     |
                                   循环结束?-------否---------------
                                     |
                                   是,退出

板凳

谢谢大哥!!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册