数值转换中应用数据输入输出时的转换串操作中应用课件.ppt

上传人(卖家):晟晟文业 文档编号:5050902 上传时间:2023-02-06 格式:PPT 页数:44 大小:259.50KB
下载 相关 举报
数值转换中应用数据输入输出时的转换串操作中应用课件.ppt_第1页
第1页 / 共44页
数值转换中应用数据输入输出时的转换串操作中应用课件.ppt_第2页
第2页 / 共44页
数值转换中应用数据输入输出时的转换串操作中应用课件.ppt_第3页
第3页 / 共44页
数值转换中应用数据输入输出时的转换串操作中应用课件.ppt_第4页
第4页 / 共44页
数值转换中应用数据输入输出时的转换串操作中应用课件.ppt_第5页
第5页 / 共44页
点击查看更多>>
资源描述

1、11、数值转换中应用、数值转换中应用 数据输入数据输入/输出时的转换输出时的转换2、串操作中应用、串操作中应用 串移动、串搜索、串比较、串移动、串搜索、串比较、串插入、串删除串插入、串删除3、代码转换中应用、代码转换中应用 ASCII码码 BCD码码 二进数二进数 BCD码码 4、算术运算、算术运算 2ASCII码输入设备码输入设备ASCII码表示的码表示的十进制十进制二进制二进制ASCII码表示的码表示的十六进制十六进制二进制二进制ASCII码表示的码表示的二进制二进制二进制二进制机内二进制操作运算机内二进制操作运算二进制二进制ASCII码码表示的十进制表示的十进制二进制二进制ASCII码码

2、表示的十六进制表示的十六进制二进制二进制ASCII码码表示的二进制表示的二进制ASCII码输出设备码输出设备3设设5位十进数从高位到低位位十进数从高位到低位依次是依次是d4、d3、d2、d1、d0。可用下列多项式进行计算:可用下列多项式进行计算:(0*10+d4)*10+d3)*10+d2)*10+d1)*10+d0初始化初始化是是0-9ASCII码码-30H累加器累加器*10累加器累加器+这一位值这一位值修改指令修改指令结束结束NY4 CHG_DEC_BIN PROC ;MOV DX,0 ;初始化;初始化MOV CX,10GET_ASC:MOV AL,SI;取得十进制数;取得十进制数CMP

3、AL,0JB EXITCMP AL,9JA EXITDEC_BIN:SUB AL,30HMOV AH,0MOV AX,DXMUL CX ;*10MOV DX,AXADD DX,AXINC SI ;修改指针;修改指针JMP GET_ASCEXIT:RET ;CHG_DEC_BIN ENDP56BIN_TO_DEC PROC ;PUSH DI ;MOV CX,5 ;初始化;初始化 CLEAR_BUF:MOV BYTE PTRDI,INC DILOOP CLEAR_BUFDEC DIMOV CX,10 CHANGE:POP DIRETBIN_TO_DECENDP7 十六进制数的字符为十六进制数的字符

4、为09和和AF,输入后,输入后,ASCII码为码为30H39H和和41H46H 转换时,转换时,HEX_TO_BIN PROC PUSH AX PUSH CX MOV DX,0 ;GET_CHAR:MOV AX,01H ;键盘输入;键盘输入 INT 21H SUB AL,30H JL EXIT CMP AL,0AH JL CHANGE SUB AL,07H8CMP AL,0AH ;是否是大写字母;是否是大写字母JL EXITCMP AL,0FHJLE CHANGECMP AL,2AH ;是否是小写字母;是否是小写字母JL EXITCMP AL,2FHJLE CHANGEJMP EXIT POP

5、 CXPOP AX EXIT:RET HEX_TO_BIN ENDP910 1、一般情况、一般情况 S1 S2 源区源区 目的区目的区2、特殊情况:、特殊情况:源区源区 目的区目的区 目的区目的区 源区源区 11 将串将串STR中第一个中第一个I字符找出,并显示其在串中的位移量字符找出,并显示其在串中的位移量D_SEG SEGMENTSTR DB THIS IS A COMPUTERSTR_LEN=$-STRD_SEG ENDS.LEA DI,STRMOV CX,STR_LENMOV AL,ICLD FOUND:JE OK1JCXZ RETN12PUSH CXMOV CL,4SHR DL,CL

6、POP CXCMP DL,0AHJB OK2ADD DL,7OK2:ADD DL,30HMOV AH,02HINT 21H;显示位移量高位;显示位移量高位MOV DL,BLAND DL,0FHCMP DL,0AHJB OK30K3:ADD DL,30HMOV AH,02HINT 21H;显示位移量低位;显示位移量低位MOV DL,HINT 21H RETN:.13 比较串比较串STR1和和STR2是否相等是否相等 D_SEG SEGMENTSTR1DB STRING1STR2DB STRING2STR_LEN=($-STR1)/2MSG1DB NOT EQUAL,$MSG2DB EQUAL,$

7、D_SEG ENDS.LEA SI,STR1MOV DI,OFFSET STR2MOV CX,STR_LENCLD14JNZ NO_EQUAEQUA:MOV AH,09HLEA DX,MSG2INT 21H;提示两个串相等;提示两个串相等JMP CMP_ENDNO_EQUA:MOV AH,09HLEA DX,MSG1INT 21H;提示两个串不等;提示两个串不等.CMP_END:.15串插入分三种情况:串插入分三种情况:1、在目的串首插入、在目的串首插入 2、在目的串尾插入、在目的串尾插入 3、在目的串中指定的位置插入、在目的串中指定的位置插入 将正数将正数N插入一个升序的字数组中,插入一个升

8、序的字数组中,数组的首地址和末地址为数组的首地址和末地址为 A_HEAD和和A_END X 3 A_HEAD X DW?5 A_HEAD DW 3,5,23,49,52,65 23 A_END DW 105 49 N DW 32 52 65 105 A_END 32 N16 MOV AX,N MOV SI,0 COMPARE:CMP A_ENDSI,AX JLE INSERT MOV BX,A_ENDSI MOV A_ENDSI+2,BX SUB SI,2 JMP COMPARE INSERT:MOV A_ENDSI+2,AX .17 附加段中有一个首地址为附加段中有一个首地址为 LIST的字

9、数组,数组的第一的字数组,数组的第一字中存放该数组长度,数组字中存放该数组长度,数组首地址在首地址在DI中,数中,数X在在AX中,中,现要在数组中查找现要在数组中查找X,若找,若找到则删除。到则删除。18 CLD PUSH DI MOV CX,ES:DI;数组长度送;数组长度送CX ADD DI,2;DI指向第一个元素指向第一个元素 ;串扫描;串扫描 JE DELETE;如找到则删除;如找到则删除 POP DI;否则,退出;否则,退出 JMP EXITDELET:;若;若CX=0,X为最后一个元素为最后一个元素NEXT_EL:MOV BX,ES:DI MOV ES:DI-2,BX;ADD DI

10、,2 LOOP NEXT_ELDEC_CNT:POP DI DEC WORD PTR ES:DI;EXIT:.19 求字符串的长度送入求字符串的长度送入LEN,假定串以,假定串以$结束结束 STRING DB Hello,How are you!,$.MOV SI,OFFSET STRING XOR BL,BLLOP:MOV AL,SI JZ DONE INC BL INC SI JMP LOPDONE:MOV LEN,BL 2021 令令ASC_BUF开始的缓冲区开始的缓冲区内存放着若干个内存放着若干个ASCII码表示码表示 ASC_BUF 31H 的十进制数,的十进制数,(每个单元存放一每

11、个单元存放一 32H个十进制数个十进制数),要求将其转换成,要求将其转换成 33HBCD码,并把两个相邻单元的码,并把两个相邻单元的 34HBCD码合并在一个存储单元中码合并在一个存储单元中 35H 若若ASCII码的个数为奇数,码的个数为奇数,则将首地址单元的十进制数对则将首地址单元的十进制数对 应的应的BCD码单独存放一个单元码单独存放一个单元,BCD_BUF 1其余的按统一方法处理其余的按统一方法处理 32 子程序名:子程序名:DEC_ASC_BCD 5422DEC_ASC_BCD PROC FAR PUSH SI ;保护现场;保护现场 PUSH DI PUSH AX PUSH BX P

12、USH CX ;ASCII码为偶数个转移码为偶数个转移23 POP CX ;恢复现场;恢复现场 POP BX POP AX POP DI POP SI RET DEC_ASC_BCD ENDP 24 将数据段字节变量将数据段字节变量BCD_BUF为首地址的缓冲区中一个为首地址的缓冲区中一个八位十进制数对应的压缩八位十进制数对应的压缩BCD码转换成码转换成ASCII码,并显示码,并显示 BCD_BUF 12 34 56 78 显示:显示:7 8 5 6 3 4 1 2 子程序名:子程序名:BCD_DEC_ASC 25BCD_DEC_ASC PROC NEAR PUSH SI ;保护现场;保护现场

13、 PUSH AX PUSH CX MOV CX,4 LEA SI,BCD_BUF MOV DH,0 CHG_OUT1:PUSH CX CALL STD_OUT ;标准设备输出;标准设备输出26 CHG_OUT2:POP CX CMP CX,1 JNZ CHG_OUT3 MOV DH,0FFH CHG_OUT3:PUSH CX CALL STD_OUT ;标准设备输出;标准设备输出 CHG_OUT4:POP CX LOOP CHG_OUT1 POP CX POP AX POP SI RET BCD_DEC_ASC ENDP 27STD_OUT PROC NEAR ;标准设备输出;标准设备输出 P

14、USH DX PUSH AX MOV DL,AL MOV AH,2 INT 21H POP AX POP DX RET STD_OUT ENDP28 DX寄存器中为一个十六位无符号二进制数寄存器中为一个十六位无符号二进制数(0-65535),将其转将其转换为压缩的换为压缩的BCD码码,保存保存在在BCD_BUF缓冲区缓冲区 DX BCD_BUFBIN_TO_BCD PROC FAR 15678 78 PUSH AX 56 PUSH CX 1 PUSH DX 0 PUSH DI 0 LEA DI,BCD_BUF MOV AL,0 MOV CX,5CLEAR_BUF:MOV DI,AL ;初始化缓

15、冲区;初始化缓冲区 INC DI LOOP CLEAR_BUF LEA DI,BCD_BUF29 CHG_BCD1:MOV AX,DX ;转换开始;转换开始 MOV DX,0 MOV CX,10 DIV CX XCHG AX,DX ;交换余数和商;交换余数和商 MOV BL,AL ;余数送;余数送AL MOV AX,DX MOV DX,0 MOV CX,10 DIV CX XCHG AX,DX MOV CL,4 ROL AL,CL AND AL,0F0H OR AL,BL ;组合;组合BCD码码 MOV DI,AL ;存储;存储BCD码码 INC DI CMP DX,0 JNZ CHG_BCD

16、1 POP DI 30 将将AX寄存器中的四位压缩型寄存器中的四位压缩型BCD码转换为二进制数码转换为二进制数 BCD_TO_BIN PROC PUSH CX PUSH SI PUSH DI MOV SI,AX XOR AX,AX MOV CX,4 AGAIN1:MOV DI,0 PUSH CX MOV CX,4 AGAIN2:31 MOV CX,10 MUL CX ;乘;乘10 ADD AX,DI POP CX LOOP AGAIN1 MOV DX,AX ;转换后的二进数在;转换后的二进数在DX中中 POP DI POP SI POP CX RET BCD_TO_BIN ENDP32 例如,

17、两个无符号四字节二进数相加:例如,两个无符号四字节二进数相加:3 4 6 B 7 F 7 A H +2A BC 8 5 4 8 H 5 F 2 8 0 4 C 2 H 计算步骤为:计算步骤为:第一步第一步 第二步第二步 7 A F 7 4 8 8 5 ADC 0 ADC 0 C 2 (CF=0)0 4 (CF=1)第三步第三步 第四步第四步 6 B 3 4 B C 2 A ADC 1 ADC 1 2 8 (CF=1)5 F (CF=0)33ADR1 DB 7AH,7FH,6BH,34HADR2 DB 48H,85H,0BCH,2AHSUM DB 0,0,0,0 MOV SI,OFFSET AD

18、R1 MOV BX,OFFSET ADR2 MOV DI,OFFSET SUM MOV CL,4 CLC ;CF-0 AGAIN:MOV AL,SI ADC AL,BX ;字节加;字节加 MOV DI,AL INC SI ;修改地址;修改地址 INC BX INC DI LOOP AGAIN 34 设在单元设在单元A、B和和C存放有三个数,若三个数都不为存放有三个数,若三个数都不为0,则,则求出三个数之和存入求出三个数之和存入D中;若有一个为中;若有一个为0,则将其他两个单元,则将其他两个单元也清也清0。MOV AX,ACMP AX,0MOV AX,BCMP AX,0MOV AX,CCMP A

19、X,0ADD AX,A ADC AX,B MOV D,AX P1:MOV A,0 MOV B,0 MOV C,0DONE:.35数据区数据区DATA1和和DATA2分别存放分别存放N个字节数据,检查它们的数个字节数据,检查它们的数据是否相同。若完全一致,则将据是否相同。若完全一致,则将FLAG置置FFH,否则置,否则置0,并将,并将第一次出现的不同数据的地址分别存入第一次出现的不同数据的地址分别存入D1和和D2中。中。(1)用一般比较指令用一般比较指令CMP实现实现 LEA SI,DATA1 LEA DI,DATA2 MOV CX,NM2:MOV AL,SI CMP AL,DI JNZ M1

20、INC SI INC DI LOOP M2 M1:MOV D1,SI MOV D2,DIDONE:36(2)用串操作指令)用串操作指令CMPS实现实现 LEA SI,DATA1 LEA DI,DATA2 MOV CX,N CLD REPZ CMPSB M3:DEC SI DEC DI MOV D1,SI MOV D2,DIDONE:371、利用高档机、利用高档机32位字长特性位字长特性有两个有两个4字长数分别存放在字长数分别存放在DATA1和和DATA2中,求它中,求它们的和,结果存放于们的和,结果存放于DATA3中中。DATA1 DQ 123456789ABCDEFHDATA2 DQ 0FE

21、DCBA987654321HDATA3 DQ?38 CLC LEA SI,DATA1 LEA DI,DATA2 LEA BX,DATA3 BACK:8086中实现中实现:39386及其后继机中实现及其后继机中实现:CLC LEA SI,DATA1 LEA DI,DATA2 LEA BX,DATA3 BACK:MOV EAX,SI ADC EAX,DI MOV BX,EAX LOOP BACK40386及其后继机中实现:及其后继机中实现:MOV EDX,DWORD PTR DATA+4ADC EDX,DWORD PTR DATA2+4 412、通用寄存器可作为指针寄存器、通用寄存器可作为指针寄存

22、器例:例:MOV EAX,BX MOV EAX,EDX MOV AX,WORD PTR ECX MOV AX,EBXEBX 423、与比例因子有关的寻址方式、与比例因子有关的寻址方式把把5个双字相加并保存结果个双字相加并保存结果ARRAY DD 234556H,0F983F5H,6754AE2H,0C5231239H,0AF34ACB4HRESULT DQ?SUB EBX,EBX MOV EDX,EBX MOV EAX,EBX MOV CX,5BACK:MOV DWORD PTR RESULT,EAX MOV DWORD PTR RESULT+4,EDX43数据段中有一个数据段中有一个20个字节的表和一个个字节的表和一个20个字的表,把字节表中个字的表,把字节表中每个数据作为表中的高位字节部分移入字表中。每个数据作为表中的高位字节部分移入字表中。XOR SI,SI XOR DI,DINEXT:INC SI ADD DI,2 CMP SI,20 JL NEXT BYTE_TABLE DB 20 DUP(?)WORD_TABLE DW 20 DUP(?)44 XOR ESI,ESINEXT:INC ESI CMP ESI,20 JL NEXT

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

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(数值转换中应用数据输入输出时的转换串操作中应用课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|