




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
汇编语言在数据处理中的应用 汇编语言在数据处理中应用1 数值转换中应用数据输入 输出时的转换2 串操作中应用串移动 串搜索 串比较 串插入 串删除3 代码转换中应用ASCII码BCD码二进数BCD码4 算术运算 ASCII码输入设备 ASCII码表示的十进制 二进制 ASCII码表示的十六进制 二进制 ASCII码表示的二进制 二进制 机内二进制操作运算 二进制 ASCII码表示的十进制 二进制 ASCII码表示的十六进制 二进制 ASCII码表示的二进制 ASCII码输出设备 例10 1 ASCII码十进制转换为二进制数设5位十进数从高位到低位依次是d4 d3 d2 d1 d0 可用下列多项式进行计算 0 10 d4 10 d3 10 d2 10 d1 10 d0 初始化 是0 9 ASCII码 30H 累加器 10 累加器 这一位值 修改指令 结束 N Y 例10 1 ASCII码十进制转换为二进制数CHG DEC BINPROC SI指向十进制缓冲区首址MOVDX 0 初始化MOVCX 10GET ASC MOVAL SI 取得十进制数CMPAL 0 JBEXITCMPAL 9 JAEXITDEC BIN SUBAL 30HMOVAH 0PUSHAXMOVAX DXMULCX 10MOVDX AXPOPAXADDDX AXINCSI 修改指针JMPGET ASCEXIT RET 转换后的二进数在DX中CHG DEC BINENDP 例10 2 二进制数转换为ASCII码十进制 例10 2 二进制数转换为ASCII码十进制BIN TO DECPROC 被转换的十进数在AX中PUSHDI DI指向存放十进数缓冲区首址MOVCX 5 初始化CLEAR BUF MOVBYTEPTR DI INCDILOOPCLEAR BUFDECDIMOVCX 10CHANGE MOVDX 0 转换DIVCX 除以10 余数在DXADDDL 30H ASCII码MOVBYTEPTR DI DL 存储十进制数DECDICMPAX 0商是否为0 JNZCHANGEPOPDIRETBIN TO DECENDP ASCII码十六进制数转换为二进制数十六进制数的字符为0 9和A F 输入后 ASCII码为30H 39H和41H 46H转换时 若是数字0 9 减30H若是A F 减去37H 例10 3 ASCII码十六进制数转换为二进制数HEX TO BINPROCPUSHAXPUSHCXMOVDX 0 转换后结果在DX中GET CHAR MOVAX 01H 键盘输入INT21HSUBAL 30HJLEXITCMPAL 0AHJLCHANGESUBAL 07H CMPAL 0AH 是否是大写字母JLEXITCMPAL 0FHJLECHANGECMPAL 2AH 是否是小写字母JLEXITCMPAL 2FHJLECHANGEJMPEXITCHANGE MOVCL 4 转换SHLDX CLMOVAH 0ADDDX AXJMPGET CHARPOPCXPOPAXEXIT RETHEX TO BINENDP 汇编语言在串操作中的应用 串移动 数据块移动 串搜索串比较串插入串删除求串长 数据块移动1 一般情况S1S2源区目的区2 特殊情况 源区与目的区重叠源区目的区目的区源区 例10 4 串搜索例将串STR中第一个 I 字符找出 并显示其在串中的位移量D SEGSEGMENTSTRDB THISISACOMPUTER STR LEN STRD SEGENDS LEADI STRMOVCX STR LENMOVAL I CLDFOUND REPNZSCASBJEOK1JCXZRETNOK1 MOVDX DIDECDL 第一个 I 字符距串头位移量MOVBL DL PUSHCXMOVCL 4SHRDL CLPOPCXCMPDL 0AHJBOK2ADDDL 7OK2 ADDDL 30HMOVAH 02HINT21H 显示位移量高位MOVDL BLANDDL 0FHCMPDL 0AHJBOK3ADDDL 70K3 ADDDL 30HMOVAH 02HINT21H 显示位移量低位MOVDL H INT21HRETN 例10 5 串比较例比较串STR1和STR2是否相等D SEGSEGMENTSTR1DB STRING1 STR2DB STRING2 STR LEN STR1 2MSG1DB NOTEQUAL MSG2DB EQUAL D SEGENDS LEASI STR1MOVDI OFFSETSTR2MOVCX STR LENCLDREPECMPSBJNZNO EQUA EQUA MOVAH 09HLEADX MSG2INT21H 提示两个串相等JMPCMP ENDNO EQUA MOVAH 09HLEADX MSG1INT21H 提示两个串不等 CMP END 串插入串插入分三种情况 1 在目的串首插入2 在目的串尾插入3 在目的串中指定的位置插入 例10 6 串插入例将正数N插入一个升序的字数组中 数组的首地址和末地址为A HEAD和A ENDX3A HEADXDW 5A HEADDW3 5 23 49 52 6523A ENDDW10549NDW325265105A END32N MOVAX NMOVA HEAD 2 1MOVSI 0COMPARE CMPA END SI AX 从最后一个元素开始比较JLEINSERTMOVBX A END SI MOVA END SI 2 BX 后移一个元素SUBSI 2JMPCOMPAREINSERT MOVA END SI 2 AX 插入 串删除 例10 7 串删除例附加段中有一个首地址为LIST的字数组 数组的第一字中存放该数组长度 数组首地址在DI中 数X在AX中 现要在数组中查找X 若找到则删除 CLDPUSHDIMOVCX ES DI 数组长度送CXADDDI 2 DI指向第一个元素REPNESCASW 串扫描JEDELETE 如找到则删除POPDI 否则 退出JMPEXITDELET JCXZDEC CNT 若CX 0 X为最后一个元素NEXT EL MOVBX ES DI MOVES DI 2 BX 向前移动一个元素ADDDI 2LOOPNEXT ELDEC CNT POPDIDECWORDPTRES DI 数组元素个数减1EXIT 求串长 例10 8 求串长例求字符串的长度送入LEN 假定串以 结束STRINGDB Hello Howareyou MOVSI OFFSETSTRINGXORBL BLLOP MOVAL SI CMPAL JZDONEINCBLINCSIJMPLOPDONE MOVLEN BL 汇编语言在代码转换中的应用1 十进制ASCII码转换成BCD码2 BCD码转换成十进制数的ASCII码3 二进制数转换为BCD码4 BCD码转换为二进制数 例10 9 十进制ASCII码转换成BCD码例令ASC BUF开始的缓冲区内存放着若干个ASCII码表示ASC BUF31H的十进制数 每个单元存放一32H个十进制数 要求将其转换成33HBCD码 并把两个相邻单元的34HBCD码合并在一个存储单元中35H若ASCII码的个数为奇数 则将首地址单元的十进制数对应的BCD码单独存放一个单元 BCD BUF1其余的按统一方法处理32子程序名 DEC ASC BCD54入口参数 DS SI指向ASCII码首地址ASC BUFES DI指向BCD码首地址BCD BUFCX 串长度 DS ES指向同一个段出口参数 BCD码存放在BCD BUF为首地址的缓冲区内 DEC ASC BCDPROCFARPUSHSI 保护现场PUSHDIPUSHAXPUSHBXPUSHCXRORCX 1JNCNEXT ASCII码为偶数个转移ROLCX 1LODSB 取ASCII码到ALANDAL 0FH ASCII码转换成BCD码STOSB 存储BCD码DECCXRORCX 1 奇数个时单独处理完 NEXT LODSBANDAL 0FHMOVBL ALLODSBPUSHCXMOVCL 4SALAL CLPOPCXADDAL BL 合并BCD码STOSB 存储BCD码LOOPNEXTPOPCX 恢复现场POPBXPOPAXPOPDIPOPSIRETDEC ASC BCDENDP 例10 10 BCD码转换成十进制数的ASCII码例将数据段字节变量BCD BUF为首地址的缓冲区中一个八位十进制数对应的压缩BCD码转换成ASCII码 并显示BCD BUF12345678显示 78563412子程序名 BCD DEC ASC入口参数 一个八位十进制数对应的压缩BCD码存储在BCD BUF缓冲区出口参数 正常结束 DH 0FFH BCD DEC ASCPROCNEARPUSHSI 保护现场PUSHAXPUSHCXMOVCX 4LEASI BCD BUFADDSI 3MOVDH 0CHG OUT1 PUSHCXMOVAL SI 取压缩BCD码DECSI 修改指针MOVDL ALMOVCL 4RORAL 4ANDAL 0FH 取高半字节BCD码ADDAL 30H 生成ASCII码CALLSTD OUT 标准设备输出 CHG OUT2 POPCXCMPCX 1JNZCHG OUT3MOVDH 0FFHCHG OUT3 PUSHCXMOVAL DLANDAL 0FH 取低半字节BCD码ADDAL 30H 生成ASCII码CALLSTD OUT 标准设备输出CHG OUT4 POPCXLOOPCHG OUT1POPCXPOPAXPOPSIRETBCD DEC ASCENDP STD OUTPROCNEAR 标准设备输出PUSHDXPUSHAXMOVDL ALMOVAH 2INT21HPOPAXPOPDXRETSTD OUTENDP 例10 11 二进制数转换为BCD码例DX寄存器中为一个十六位无符号二进制数 0 65535 将其转换为压缩的BCD码 保存在BCD BUF缓冲区DXBCD BUFBIN TO BCDPROCFAR1567878PUSHAX56PUSHCX1PUSHDX0PUSHDI0LEADI BCD BUFMOVAL 0MOVCX 5CLEAR BUF MOV DI AL 初始化缓冲区INCDILOOPCLEAR BUFLEADI BCD BUF CHG BCD1 MOVAX DX 转换开始MOVDX 0MOVCX 10DIVCXXCHGAX DX 交换余数和商MOVBL AL 余数送ALMOVAX DXMOVDX 0MOVCX 10DIVCXXCHGAX DXMOVCL 4ROLAL CLANDAL 0F0HORAL BL 组合BCD码MOV DI AL 存储BCD码INCDICMPDX 0JNZCHG BCD1POPDI 例10 12 BCD码转换为二进制数例将AX寄存器中的四位压缩型BCD码转换为二进制数BCD TO BINPROCPUSHCXPUSHSIPUSHDIMOVSI AXXORAX AXMOVCX 4AGAIN1 MOVDI 0PUSHCXMOVCX 4AGAIN2 SHLSI 1 左移1位 最高位 CFRCLDI 1 CF移入DI中LOOPAGAIN2 重复4次得到1位BCD码 MOVCX 10MULCX 乘10ADDAX DIPOPCXLOOPAGAIN1MOVDX AX 转换后的二进数在DX中POPDIPOPSIPOPCXRETBCD TO BINENDP 例10 13 多精度加法运算例如 两个无符号四字节二进数相加 346B7F7AH 2ABC8548H5F2804C2H计算步骤为 第一步第二步7AF74885ADC0ADC0C2 CF 0 04 CF 1 第三步第四步6B34BC2AADC1ADC128 CF 1 5F CF 0 ADR1DB7AH 7FH 6BH 34HADR2DB48H 85H 0BCH 2AHSUMDB0 0 0 0 MOVSI OFFSETADR1MOVBX OFFSETADR2MOVDI OFFSETSUMMOVCL 4CLC CF 0AGAIN MOVAL SI ADCAL BX 字节加MOV DI ALINCSI 修改地址INCBXINCDILOOPAGAIN 设在单元A B和C存放有三个数 若三个数都不为0 则求出三个数之和存入D中 若有一个为0 则将其他两个单元也清0 MOVAX ACMPAX 0JZP1MOVAX BCMPAX 0JZP1MOVAX CCMPAX 0JZP1ADDAX A ADCAX BMOVD AXJMPDONEP1 MOVA 0MOVB 0MOVC 0DONE 数据区DATA1和DATA2分别存放N个字节数据 检查它们的数据是否相同 若完全一致 则将FLAG置FFH 否则置0 并将第一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河北省霸州市2025年上半年事业单位公开遴选试题含答案分析
- 2025版龙门吊拆除现场安全管理及应急预案合同
- 2025年度户外运动设施防水施工及十年质保协议
- 2025版活动赞助商权益保障合同范本下载
- 2025年度体育场馆建设人工劳务外包合同模板
- 2025年度综合商业体短期租赁合同书
- 贵州省玉屏侗族自治县2025年上半年事业单位公开遴选试题含答案分析
- 2025电机产品国际认证与出口服务合同书
- 2025年度能源行业财务风险控制合同
- 贵州省凤冈县2025年上半年公开招聘村务工作者试题含答案分析
- GB/T 3799.1-2005商用汽车发动机大修竣工出厂技术条件第1部分:汽油发动机
- 小学音乐《村晚》优质课件设计
- 东锅300MW锅炉说明书
- 咯血(课件幻灯)
- 部门会签单模板
- 2023版初中化学跨学科实践活动(化学)
- 上海市环卫作业养护预算定额经费
- 宫颈环扎术护理常规
- G12《贷款质量迁徙情况表》填报说明
- 县城市管理领域集中行使行政处罚权工作衔接规范(试行)
- 九年级初三英语七选五专练1(10篇带答案)-
评论
0/150
提交评论