微机作业文档格式.docx

上传人:b****4 文档编号:18164898 上传时间:2022-12-13 格式:DOCX 页数:13 大小:248.45KB
下载 相关 举报
微机作业文档格式.docx_第1页
第1页 / 共13页
微机作业文档格式.docx_第2页
第2页 / 共13页
微机作业文档格式.docx_第3页
第3页 / 共13页
微机作业文档格式.docx_第4页
第4页 / 共13页
微机作业文档格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

微机作业文档格式.docx

《微机作业文档格式.docx》由会员分享,可在线阅读,更多相关《微机作业文档格式.docx(13页珍藏版)》请在冰豆网上搜索。

微机作业文档格式.docx

2.3程序框图9

2.4程序代码9

2.5程序结果为11

3、第13.3题11

3.1题目分析12

3.2寄存器及主存的应用说明12

3.3程序框图14

3.4程序代码14

3.5程序结果17

1、第13.1题

请将内存中SOURCE处的10个字型有符号数分成正数数组PLUS和负数数组MINUS,并统计这两个数组的数据个数,结果分别存放到字节变量PNUM(存正数个数)和MNUM(存负数个数)中。

1.1题目分析

本题应该先给三变量数组赋予地址,设循环变量CX=10,然后依次判断SOURCE处的字型有符号数的正负,若为正则存放到PNUM,字节变量PNUM+1,DI+2,SI+2;

若为负存入MINUS,字节变量MNUM+1,DI+2,SI+2,循环10次。

本题利用LODSW,STOSW,XCHG等语句操作,可以使结构精简,程序代码少。

预期结果:

SOURCE=1E00H,9100H,7400H,9700H,4200H,3000H,8100H,3F00H,1800H,2500H

PLUS=1E00H,7400H,4200H,3000H,3F00H,1800H,2500H,0000H,0000H,0000H

MINUS=9100H,9700H,8100H,0000H,0000H,0000H,0000H,0000H,0000H,0000H

PNUM=07H

MNUM=03H

1.2寄存器及主存的应用说明

依次定义了数据的存储模式,堆栈段,数据段。

数据段中定义要求的数组,计算机为其分配存储空间。

本题中用到了通用寄存器中的数据寄存器BX、AX;

变址寄存器SI、DI;

段寄存器DS、ES。

BX、SI、DI分别存储MINUS、SOURCE、PLUS数组的偏移地址。

数据段寄存器DS与SI联用寻址数据段中的源操作数,附加段寄存器ES与DI联用寻址附加段中的目的操作数,同时SI和DI能够自动增量或减量。

1.3程序框图

1.4程序代码

.MODELSMALL

.STACK

.DATA

SOURCEDW1E00H,9100H,7400H,9700H,4200H,3000H,8100H,3F00H,1800H,2500H

COUNTEQU($-SOURCE)/2

PLUSDWCOUNTDUP(?

MINUSDWCOUNTDUP(?

PNUMDB0

MNUMDB0

.CODE

.STARTUP

MOVSI,OFFSETSOURCE;

给SI赋予SOURCE的偏移地址

MOVDI,OFFSETPLUS;

给DI赋予PLUS的偏移地址

MOVBX,OFFSETMINUS;

给BX赋予MINUS的偏移地址

MOVAX,DS;

所有数据都在数据段中,故设置ES=DS

MOVES,AX

MOVCX,COUNT;

给循环变量CX赋值

CLD

AGAIN:

LODSW;

字串读取:

ALDS:

[SI];

然后:

SISI+2

CMPAX,0;

检测符号位,判断是正是负

JLFUSHU;

小于0,是负数,转向FUSHU

JZNEXT;

等于0,不处理,跳转到NEXT

STOSW;

大于0,是正数,存入PLUS;

DIDI+2

INCPNUM;

字节变量PNUM+1

JMPNEXT:

跳转到NEXT

FUSHU:

XCHGBX,DI

把负数存入MINUS;

INCMNUM;

字节变量MNUM+1

NEXT:

LOOPAGAIN

.EXIT

END

1.5程序结果为?

2、第13.2题

对一个由可打印的ASCⅡ组成的字符串(其ASCⅡ码值在20H-7FH之间,最后以00H结束),可按照如下办法对其进行压缩:

从字符串首开始向后扫描,若某字符串单独出现则该字符不变;

若某字符连续出现N次,则该字符用ESC(1BH),N,原字符共3个字节来代替,设内存中SOURC处有一个按上述方法进行压缩的字符串,以00H结束。

现要求对其进行解压缩,假定解压后的字符串长度不超过100.处理结果存放到RESULT处。

2.1题目分析

本题应先判断给出的字符里是否有1BH,若有则得N值,进而得到连续字符,若无直接送到目标地址,继续搜寻,直到扫描到00H为止,并将最终结果存储在规定的内存单元中。

本题的注意事项是扫描到1BH之后,如何获得连续字符。

SOURCE=41H,1BH,06H,43H,61H,00H

RESULT=41H,43H,43H,43H,43H,43H,43H,61H,00H

2.2寄存器及主存的应用说明

变址寄存器SI。

BX、SI分别存储SOURCE、RESULT数组的偏移地址。

AX寄存器常用于算术运算、逻辑运算以及外设传送信息等。

2.3程序框图

2.4程序代码

SOURCEDB41H,1BH,06H,43H,61H,00H

RESULTDB100DUP(?

MOVBX,OFFSETSOURCE;

给BX赋予SOURCE的偏移地址

MOVSI,OFFSETRESULT;

给SI赋予RESULT的偏移地址

MOVAL,[BX]:

将SOURCE的值传递给AL

CMPAL,1BH;

检测字符1BH

JEWEI;

若有字符1BH,则跳转到WEI

MOV[SI],AL;

若无字符1BH,则将AL内容送到RESULT

CMPAL,0

JEOVER;

若有字符00H,则结束循环

INCBX;

BX+1

INCSI;

SI+1

JMPAGAIN

WEI:

MOVCH,0

MOVCL,[BX];

取CX=N

INCBX

FENG:

MOVAL,[BX]

将BX里的值赋给RESULT

LOOPFENG;

循环N次

JMPAGAIN;

跳转到AGAIN

OVER

2.5程序结果为

SOURCE=41H,1BH,06H,43H,61H,00H

3、第13.3题

内存中NUMA和NUMB处各存放着10个字节型有符号数,分别为Ak和Bk(k=0,1,…,9)。

从键盘输入一个字符,若输入的字符为‘+’,则计算Ck=∣Ak∣+∣Bk∣,结果保存到字型变量NUMC处,程序结束;

若输入的字符为‘*’,则计算Ck=∣Ak∣*∣Bk∣,结果保存到字型变量NUMC处,程序结束;

若输入的是其他字符,则在下一行显示‘ERROR’,程序结束。

3.1题目分析

本题应先判断输入的字符是否为*或+,并进行对应的操作,若为*或/+,为两个字型有符号数的绝对值(正数取本身,负数则取反加1变为绝对值)相乘或相加,即用到乘法指令mulr16/m16或adddest,src,并将结果存储在规定的内存单元中。

本题的注意事项在于其乘数为字型有符号数,题目要求取反,乘积为双字,需要控制其结果存储的位置,以达到规定要求。

NUMC=0080H,0090H,0078H,004DH,004CH,00A2H,00DEH,0087H,002FH,00D0H;

’+’

NUMC=0700H,086FH,072CH,044EH,0000H,16FDH,2FA8H,0C4EH,0138H,295FH;

’*’

3.2寄存器及主存的应用说明

本题中用到了通用寄存器中的数据寄存器BX、AX、CX;

变址寄存器SI、DI。

BX、SI、DI分别存储NUMA、NUMB、NUMC数组的偏移地址。

变址寄存器SI和DI,常用于存储器变址寻址方式时提供地址。

CX为计数寄存器,常用于计数控制循环程序中。

3.3程序框图

3.4程序代码

NUMADB10H,11H,12H,13H,00H,95H,86H,97H,08H,89H

COUNTEQU$-NUMA

NUMBDB90H,81H,66H,3AH,4CH,37H,64H,1EH,27H,59H

NUMCDWCOUNTDUP(?

ERRORDB0DH,0AH,'

ERROR!

$'

MOVSI,OFFSETNUMA;

给SI赋予NUMA的偏移地址

MOVDI,OFFSETNUMB;

给DI赋予NUMB的偏移地址

MOVBX,OFFSETNUMC;

给BX赋予NUMC的偏移地址

循环次数CX=10

MOVAH,01H

INT21H;

输入一个字符

CMPAL,'

+'

;

比较AL与+

JZWEI;

相等,跳转到WEI

CMPAL,’*’;

比较AL与*

JZFENG;

相等,跳转到FENG

MOVAH,09H

MOVDX,OFFSETERROR;

显示ERROR

JMPDONE;

跳转到DONE

CMPBYTEPTR[SI],0;

比较SI中字节型数据与0的大小

JLF1;

小于0跳转到F1

CMPBYTEPTR[DI],0;

比较DI中字节型数据与0的大小

JLF2;

小于0跳转到F2

MOVAL,[SI];

将SI中的偏移地址移动到AL中

ADDAL,[DI];

将DI中的偏移地址与AL中的偏

移地址相加并移动到AL中去

MOVAH,0;

AH置0

MOV[BX],AX;

将AX移动到BX中去并存为BX的偏移地址

SI加1

INCDI;

DI加1

ADDBX,2;

将2与BX相加并移动到BX中去

LOOPWEI;

循环WEI

F1:

NEGBYTEPTR[SI];

将SI偏移地址中的字节型数据求反

JMPWEI;

跳转到WEI

F2:

NEGBYTEPTR[DI];

将DI偏移地址中的字节型数据求反

JLF3;

小于0跳转到F3

JLF4;

小于0跳转到F4

将SI中的偏移地址转移到AL中去

MULBYTEPTR[DI];

无符号数字节型数据相乘

将AX移动到BX中去并存为BX的偏移地址

将2加到BX中去

循环FENG

F3:

JMPFENG;

跳转到FENG

F4:

DONE:

3.5程序结果

程序结果为

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 自然景观

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1