码文不易,如果帮助到您,希望您可以帮我刷一下点击量,与您无害,与我有益谢谢 支持原创 。
欢迎大家阅读我的博客,如果有错误请指正,有问题请提问,我会尽我全力改正错误回答问题。在此谢谢大家。
码文不易,如果帮助到您,希望您可以帮我刷一下点击量,与您无害,与我有益谢谢 支持原创 。
(1)掌握不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解。
(2)熟悉调试程序的方法。
(1)编制程序将ASCII码表示的十进制数转换为二进制数;
(2)编制程序将十进制的ASCII码转换为BCD码;
ASCII码转十进制数(bcd码) 实验目的实验内容*重点内容*编译环境目录ASCII码转十进制数 一、知识点 (1)ASCII码表 数字部分(2)流程图(3)代码解析 二、运行结果 ASCII码转十进制数 三、源码 ASCII码转bcd码 一、知识点 (1)流程图(2)代码解析 二、运行结果 ASCII码转BCD码 三、源码
码文不易,如果帮助到您,希望您可以帮我刷一下点击量,与您无害,与我有益谢谢 支持原创 。
数据部分,NUM代表5位ASCII码这里分别是00019
代码段,进行数据导入
将NUM的位置存入SI,以便之后调用
重点:将000AH赋值给BX,表示每一位数字的权重
重点:将0004H赋值给CX,记录之后循环的次数,因为输入是5个数字,所以这里循环四次。
将SI所存地址中的数据(也就是NUM的第一个数字)存入AL(AX寄存器的第四位)
将AL中的值减30H(根据ASCII码表,0对应编码为0x30H,1对应的编码为0x31H以此类推,所以ASCII码减去0x30H就是对应的数字)
循环部分
将AL的值乘上BX中的值(附权值)Al加上下一位ASCII码AL减去30H,与上一步合起来相当于加上下一位的值SI指向下一位循环,注意循环的次数之前指定了,默认取CX中的值
码文不易,如果帮助到您,希望您可以帮我刷一下点击量,与您无害,与我有益谢谢 支持原创 。
输入为 30H 30H 31H 31H 39H
输出为0077H 7*16+7=119 结果正确
码文不易,如果帮助到您,希望您可以帮我刷一下点击量,与您无害,与我有益谢谢 支持原创 。
DATA SEGMENT NUM DB 30H,30H,30H,31H,39H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV SI,OFFSET NUM; MOV BX,000AH MOV CX,0004H; MOV AH,00H MOV AL,[SI] SUB AL,30H ; A1: IMUL BX ; ADD AL,[SI+01]; SUB AL,30H; INC SI LOOP A1;Ñ»· MOV [SI],AX INT 21H CODE ENDS END STARTBCD码(Binary-Coded Decimal)亦称二进码十进数或二-十进制代码。用4位二进制数来表示1位十进制数中的0~9这10个数码。
重点:将0010H赋值给BX,表示每一位数字的权重,这是和上面程序唯一不同的地方
输入为 30H 30H 30H 31H 39H
输出结果为0019 结果正确
码文不易,如果帮助到您,希望您可以下载一个压缩包,与您无害,与我有益谢谢支持原创
DATA SEGMENT NUM DB 30H,30H,30H,31H,39H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV SI,OFFSET NUM; MOV BX,0010H MOV CX,0004H; MOV AH,00H MOV AL,[SI] SUB AL,30H ; A1: IMUL BX ; ADD AL,[SI+01]; SUB AL,30H; INC SI LOOP A1; MOV [SI],AX INT 21H CODE ENDS END START码文不易,如果帮助到您,希望您可以帮我刷一下点击量,与您无害,与我有益谢谢 支持原创 。