预览加载中,请您耐心等待几秒...
1/9
2/9
3/9
4/9
5/9
6/9
7/9
8/9
9/9

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

18.编写程序,将MBUF为起始单元的5个数按相反次序传送到NBUF开始的存储单元中。 程序: DATASEGMENT MBUFDW10H,20H,30H,40H,50H ORG0014H NBUFDW5DUP(?) DATAENDS STACKSEGMENTPARASTACK DB50DUP(?) STACKENDS CODESEGMENT ASSUMECS:CODE,DS:DATA,SS:STACK START:MOVAX,DATA MOVDS,AX ;---------------------------------------------------------------------- MOVBX,OFFSETMBUF;BX指向MBUF MOVCL,5;设置循环次数 J1:PUSH[BX];将MBUF的数据压栈 INCBX INCBX;地址要加2 DECCL JNZJ1;控制循环 MOVBX,OFFSETNBUF;BX指向NBUF MOVCL,5;设置循环次数 J2:POP[BX];将堆栈中的数据弹到NBUF INCBX INCBX;地址要加2 DECCL JNZJ2;控制循环 ;---------------------------------------------------------------------- MOVAH,4CH INT21H CODEENDS ENDSTART 20.编写程序,将内存中某数据块中的正数和负数分开,并分别将这些正数和负数送同一数据段的两个缓冲区,并在屏幕上显示正数和负数的个数(数据自定)。 程序: DATASEGMENT NUMDB-1,2,-3,4,-5,6,-7,8,-9,10 K1DB'ZHENG:$';在屏幕上显示“ZHENG:” K2DB'FU:$';在屏幕上显示“FU:” K3DB0AH,0DH,'$';回车换行操作 ZHENGDB10DUP(0);用来存储正数 FUDB10DUP(0);用来存储负数 DATAENDS STACKSEGMENTPARASTACK DB50DUP(?) STACKENDS CODESEGMENT ASSUMECS:CODE,DS:DATA,SS:STACK START:MOVAX,DATA MOVDS,AX ;----------------------------------------------------------------------------- MOVCL,0 MOVBX,OFFSETNUM;BX指向NUM MOVDI,OFFSETZHENG;SI指向ZHENG MOVSI,OFFSETFU;DI指向FU J1:CMPCL,10;设置循环次数 JZOK;控制循环 MOVAL,[BX] CMPAL,0;对NUM中的数据判断正负 JGJ2;若为正数,跳到J1 MOV[SI],AL;若为负数,存入FU中 INCSI;负数个数加1 JMPJ3 J2:MOV[DI],AL;若为正数,存入ZHENG中 INCDI;正数个数加1 J3:INCCL;控制循环次数 INCBX JMPJ1;继续判断下一个数 ;------------------------------------------------------------------------------ ;屏幕显示程序 OK:MOVDX,OFFSETK1 MOVAH,09H INT21H;在屏幕上显示“ZHENG:” MOVDX,DI SUBDX,OFFSETZHENG ADDDX,30H MOVAH,02H INT21H;在屏幕上显示正数的个数 MOVDX,OFFSETK3 MOVAH,09H INT21H;换行 MOVDX,OFFSETK2 MOVAH,09H INT21H;在屏幕上显示“FU:” MOVDX,SI SUBDX,OFFSETFU ADDDX,30H MOVAH,02H INT21H;在屏幕上显示负数的个数 ;------------------------------------------------------------------------------ MOVAH,4CH INT21H CODEENDS ENDSTART 21.编写程序,从内存BLOCK开始,存放着10个字节的有符号数,从这些数中找出绝对值最大的数,将其存入MAX中。 程序:DATASEGMENT MAXDB0;MAX清零 BLOCKDB43,-23,14,19,98,79,63,24,65,-54 COUNTEQU$-BLOCK;计算数据个数 DATAENDS STACKSEGMENTPARASTACK DB50DUP(?) STA