您现在的位置:首页 > 教案下载 > 正文

微型计算机原理及应用(第三版)电子备课第7章ppt下载(3)

2019-12-30 02:02 网络整理 教案网

计算机基础知识培训教案_计算机原理教案下载_计算机操作系统教程 核心与设计原理习题7答案

【例】()设计要求:在源程序中设置数据段、堆栈段及代码段。在数据段中定义个字节数据把这种数据转化成十六补码数的ASCII码存在上述数据然后之后在屏幕上显示这种数据。显示数据用DOS功能号读取每位数据用下划线分隔。()程序步骤:程序步骤如图和图所示。()程序清单:二补码数对十六补码数转化及显示主程序如下:图图:NAMEEX程序命名伪指令程序名为EX:PAGE::DATSEGMENTPARA′DAT′:ADBHHHHAH:DBBCH,DEH,FH:B=$A形参伪指令求A(符号地址)到当前汇编表针地址($)的字节数:B=B*求倍B:ADBBDUP()数据重复定义伪指令定义ASCII码字符区:DATENDS::STACSEGMENTPARASTACK′STA′:STADWDUP():STACENDS::CODESEGMENTPARA′CODE′:ASSUMECS:CODEDS:DAT:ASSUMESS:STACES:DAT:STARPROCFAR:PUSHDS:XORAXAX:PUSHAX:MOVAXDAT:MOVDSAX:MOVESAX:LEASIA:LEADIA:MOVCXB:G:MOVBL:MOVAL[SI]:MOVBHAL:PUSHCX:MOVCL:RORALCL:POPCX:G:ANDALFH:DAA对AL两位十补码数(BCD)调整:ADDALFH:ADCALH:MOV[DI]AL:INCDI:MOVALBH:DECBL:JNZG:INCSI:LOOPG:MOVSIOFFSETAA的偏斜地址送SI原语:MOVCXB:CALLP:RET显示ASCII码字符子程序如下::PPROC:MOVBL:G:MOVDL[SI]:MOVAH:INTH:INCSI:DECBL:JNZT:MOVDL′′:MOVAH:INTH:MOVBL:T:LOOPG:RET:PENDP:CODEENDS:ENDSTAR子程序名:P功能:显示ASCII码字符入口:SI对准ASCII码区CX是ASCII码校长【例】()设计要求:设计多字节乘法运算程序要求程序才能显示运算数据和结果数据(以十六补码方式)。

分模块设计要求:①多字节乘法②多字节显示③回车换行操作。其中回车换行模块按制导设计不要求独立汇编它在主模块汇编时由包含伪指令INCLUDE插入并一齐汇编。程序层次结构如图所示。图()程序步骤(如图和图所示)图图()程序清单主程序::NAMEEX:PAGE:PUBLICDDNN:EXTRNEX:FAR:EXTRNEX:FAR::DATSEGMENTPARA′DAT′:DDBHHHHH:N=$D:DDBHHH:N=$D:DATENDS::STACSEGMENTPARASTACK:STADWDUP():STACENDS::CODESEGMENTPARA′CODE′:ASSUMECS:CODEDS:DAT:ASSUMESS:STACES:DAT:STAPROCFAR:PUSHDS:XORAXAX:PUSHAX:MOVAXDAT:MOVDSAX:MOVESAX:STD:LEASID:ADDSIN:MOVCXN:CALLEX:CALLPP:LEASID:ADDSIN:MOVCXN:CALLEX:CALLPP:CALLEX:LEASID:ADDSIN:MOVCXN:CALLEX:RET:STAENDP::INCLUDEPPASM:CODEENDS:ENDSTA回车换行子程序(分模块)::PPPROC:MOVDLDH:MOVAH:INTH:MOVDLAH:MOVAH:INTH:RET:PPENDP:NAMEEX:PAGE:PUBLICEX:CODESEGMENTPARA′CODE′:ASSUMECS:CODE:EXPROCFAR:PUSHAX:PUSHDX:F:LODSB:CALLPP:MOVDL′′:MOVAH:INTH:LOOPF:POPDX:POPAX:RET:EXENDP:分模块EX功能:多字节二补码数ASCII码转化、显示。

入口:DS:SI对准数据区高地址一端CX是宽度:PPPROC:PUSHBX:PUSHCX:MOVBLAL子程序:PP:MOVCL功能:位二补码数对十六补码数:SHRALCLASCII码转化、显示。:CALLP入口:AL是位二补码数。:MOVALBL:CALLP:POPCX:POPBX:RET:PPENDP:PPROC子程序P:PUSHAX功能:位二补码数对十六补码数:PUSHDXASCII码转化、显示:ANDALFH入口:AL高位是二补码数:CMPAL:JBS子程序P:ADDAL功能:位二补码数对十六补码数:S:ADDALHASCII码转化、显示:MOVDLAL入口:AL高位是二补码数:MOVAH:INTH:POPDX:POPAX:RET:PENDP:CODEENDS:END多字乘法子程序(分模块)::NAME:PUBLICEX:EXTRND:BYTED:BYTE:EXTRNN:ABSN:ABS::CODESEGMENTPARA′CODE′:ASSUMECS:CODE:EXPROCFAR:LEASID:LEADID:MOVBXN:MOVCXN:MM:MOVAL,DI:SBBSI,AL:INCDI:INCSI:DECBX:LOOPMM:M:JZM:JNCM:SBBBYTEPTRSI,:INCSI:DECBX:JMPM:M:RET:EXENDP:CODEENDS:END【例】大小写字母互换()设计要求:设显存数据区有大小写混和英语ASCII码字母。

将其转化成全部小写和全部大写并在屏幕显示这些字母。字母显示用DOS功能号读取。()程序算法:大小写中文字母转化查ASCII码字符表可知字母A~Z的ASCII码是H~AH字母a~z的ASCII码是H~AH。两种字母转化只需加减H即可。()程序如下::TITLEEX:PAGE::DATSEGMENTPARA′DAT′↑:DDBDHAH:DDB′AKFDjfjjecJIDJkdkjkJD′,′$′设置大小写混和字母:DATENDS↓::STACSEGMENTPARASTACK′STAC′↑:STADWDUP()设置堆栈段:STACENDS↓::CODESEGMENTPARA′CODE′:ASSUMECS:CODEDS:DAT:ASSUMESS:STACES:DAT:STARFAR:PUSHDS:XORAXAX:PUSHAX:MOVAXDAT↓:MOVDSAX设置数据段地址:MOVESAX↑:↑:CALLTT显示大小写混和字母(TT):LEADID小写字母转化大写字母(TT):CALLTT显示大写字母(TT):CALLTT大写字母转化小写字母(TT):LEADID显示小写字母(TT):CALLTT:CALLTT↓:RET:STARENDP::TTPROC:GO:MOVAL[DI]↑:CMPAL′$′:JZGO:CMPAL′A′:JBGO:CMPAL′Z′大写字母转化小写字父子程序:JAGOTT:ADDBYTEPTR[DI]H:GO:INCDI:JMPGO:GO:RET:TTENDP↓::TTPROC↑:GQ:MOVAL[DI]:CMPAL′$”:JZGQ:CMPAL′a′:JBGQ:CMPAL′Z′小写字母转化大写字父子程序:JAGQTT:SUBBYTEPTR[DI]H:GQ:INCDI:JMPGQ:GQ:RET:TTENDP:↓:TTPROC↑:LEADXDS显示字符串子程序TT:MOVAH:INTH:RET:TTENDP↓:CODEENDS:ENDSTAR执行程序:A>EXAKFDjfjjecJIDJkdkjkJDakfdjfjjecjidjkdkjkjdAKFDJFJJECJIDJKDKJKJD【例】表的处理表是数据(或信息代码)元素的集合按其元素排列次序可分为有序表和无序表。

有序表是指表中元素之间有着某些规律的表这是应用时十分希望的。无序表是指表中元素之间无任何规律可寻的表这给表的应用带给许多不便但这些表在应用中会频繁遇见如随机测试到的各类化学判据等。表的元素类别有数值型的、字符型的或是代表某些意义信息代码。表的应用非常广泛如函数表、平方及立方表、对数表、程序转移地址表、中断向量表等。表的处理有以下几个方面:①读表:读出表中某个或某种元素进行显示或处理。②删除:删掉表中某个或某种元素。③插入:在表中某个位置插入这些元素。④排序:把表中元素按某些规律再次排列。⑤搜索:从表中查找某些或某种元素。⑥对表中元素作某些要求的统计。诸如统计表中某些元素个数等。()读表程序设计①设计要求设显存DS:H地址开始有一个ASCII码字符表(设表长不小于字节)该表以*作结束标识。统计表长并以十补码数显示。由鼠标键入两位十补码数指示表的位置读出该位置元素值并送屏幕显示。②程序算法统计表长是从表首开始按字节计数用DAA指令对计数值进行十补码数调整计数遇见*符结束。对十补码计数值进行ASCII码转化送屏幕显示。用DOS功能号读取从按键键入两位十补码数将其转化成二补码数后在表中定位读出该位置的元素(ASCII码字符)并送屏幕显示。

③程序清单如下::NAMEEX:PAGE:↑:DATSEGMENTPARA′DAT′:ORGH:ADBDUP(′ABCDE′)设置数据段:DBDUP(′′)设置数据表及结束标识*:DB′*′:DATENDS↓::STACSEGMENTPARASTACK↑:STADWDUP()设置堆栈段:STACENDS↓::CODESEGMENTPARA′CODE′↑:ASSUMECS∶CODEDS∶DAT:ASSUMESS∶STACES∶DAT设置代码段:STAPROCFAR↓:PUSHDS↓:XORAXAX保护DOS返回地址:PUSHAX↑:MOVAXDAT↑:MOVDSAX置数据段值:MOVESAX↓:LEASIA↑:XORAXAX:MOVAH′*′:Q:CMPAH[SI]:JZQ统计表长:INCSI(十补码):ADDAL:DAA:JMPQ↓:Q:MOVBLAL↑:MOVCL:SHRALCL:ORALH:MOVDLAL:MOVAH:INTH十补码数转化ASCII码:ANDBLFH送屏幕显示:ORBLH:MOVDLBL:MOVAH:INTH:CALLP↓:MOVCL↑:Q:MOVAH按键键入(DOS功能号):INTH↓:CMPALH↑:JBQ:CMPALH按键键入分辨非字符:JAQ再次键入:DECCL:JZQ↓:ANDALFH↑:MOVAH按键键入数字对二补码数转化:MULAH(十位数):MOVBLAL:JMPQ↓:Q∶ANDALFH↑:ADDALBL:DECAL按键键入数字对二补码数转化:LEASIA(个位数):MOVAH:ADDSIAX↓:MOVDL′′↑:MOVAH显示下划线:INTH↓:MOVDL[SI]↑:MOVAH读表元素:INTH↓:RET:STAENDP::PPROC↑:MOVDLDH:MOVAH:INTH输出回车换行子程序:MOVDLAH:MOVAH:INTH:RET↓:P:CODEENDS:ENDSTA①设计要求设显存数据区DS∶H地址开始有个ASCII码字符该表以$符结束。

删掉表中第至元素从表首插入5个“!”符显示表删掉插入前后的内容由鼠标键入一个字符删掉表中的这个元素显示表内容。②程序算法删掉表中元素只要把上面的元素往前联通覆盖要删掉的元素。表插入元素先把指定位置之后的全部元素向后联通留出空位再把要插入的元素插入。当删掉表中某类元素时要对表进行全面搜索然后删掉所要删掉的该类元素。③程序清单如下::NAMEEX:PAGE::DATSEGMENTPARA′DAT′↑:ORGH设置数据段:ADBDHAH设置字符表:ADBDUP(′QWERTYUIO′)设置表结束符$:DBDUP(′ASDFGHJKL′):DB′$′:DATENDS:↓:STACSEGMENTPARASTACK↑:STADWDUP()设置堆栈段:STACENDS↓::CODESEGMENTPARA′CODE′↑:ASSUMECS∶CODEDS∶DAT设置代码段:ASSUMESS∶STACES∶DAT↓:STAPROCFAR:PUSHDS↑:XORAXAX保护DOS返回地址:PUSHAX↓:MOVAXDAT↑:MOVDSAX设置数据段值:MOVESAX↓:CALLIT↑:STD:MOVCX:LEASIA:MOVDISI显示字符表子程序IT:ADDSI在表中插入个!字符:ADDDI:REPMOVSB:MOVCX:MOVAL′!′:REPSTOSB↓:CLD↑:ADDSI:ADDDI删掉原第元素:MOVCX显示插入、删除后表元素(IT):REPMOVSB:CALLIT:MOVAH↓:INTH按键键入:LEASIA↑:T∶CMPBYTEPTR[SI]′$′:JZT:CMPAL[SI]查找要删掉的元素:JZT遇见$符结束:INCSI:JMPT调数据块联通子程序EX:T∶CALLEX调显示表元素子程序IT:JMPT:T∶IT:RET:STAENDP↓::ITPROC↑:LEADXA:MOVAH显示表元素子程序IT:INTH:RET:ITENDP↓:EX↑:PROC:PUSHSI:MOVDISI:INCSI数据块联通子程序:R:MOVSB:CMPBYTEPTR[DI]′$′EX:JZR:JMPR:R:SI:RET:EXENDP↓:CODEENDS:STA排序是把表中元素按某些规律排列上去排序还要事先约定排序条件称为关键条件。