1码制转换十、二进制数、ascii码之间的互相转换。①bcd内容摘要:
ADD AX,DX。 加个位数 ,(AX)=001AH CMP CH,’’。 是 ’ ’? JNZ NEXT3。 该数非负 ,转 NEXT3 NEG AX。 若为负 ,求补 NEXT3: MOV [DI],AX。 存二进制结果 RET CHANGE ENDP。 CODE ENDS END START 12 02 0A 32 36 0D … 02 0A 33 33 0D … 00 1A 21 00 3B 00 STR1 STR2 NUM SUM 10个 10个 ‘O’ … … OVER ? ? 04 0A 31 32 34 … STR1 若键入 ‘ 1234’ 33 0D ‘1’ ‘2’ ‘3’ ‘4’ … 设键入第 1个数为 26, 第 2个数为 33,则在内存各变量分配如下 : 13 本例题重点掌握 : *如何从键盘输入一个字符串 * ASCII→ 未组合 BCD→ 二进制 *有符号数的运算 ,对负数和溢出如何处理 思考题 : 若键入第一个数 26,第二个数为 4,填写各变量结果。 14 方法 1 计算二进制数中所包含的 1000的个数、100的个数、 10的个数和 1的个数。 方法 2 除 10取余。 下面举例介绍第一种方法。 流程图如下: ③ 二进制数 → BCD 15 Y N 二进制数 AX 令( DL)= 0 (AX)1000 0? (DL)+1 (AX)+1000(AX) DL存至缓冲区 令 (DL)= 0 Y N (AX)10 0? (DL)+1 (AX)+10(AX) 存 DL 存 AL 返回 DOS 求 100的个数,结构同上 A 16 汇编程序如下: DATA SEGMENT BNUM DB 270FH DNUM DB 4 DUP(?)。 存放 BCD码的缓冲区 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA BINBCD PROC FAR BEGIN: MOV AX,DATA MOV DS,AX MOV AX,BNUM。 取二进制数 LEA BX,DNUM。 BCD码缓冲区首地址送 BX 17。 计算百位的个数 MOV DL,0。 千位的个数计数器 AGAIN1: SUB AX,1000。 (AX)1000 JC NEXT1。 若 ≤ 0,则退出循环 INC DL。 (DL)+1 JMP AGAIN1 NEXT1: ADD AX,1000。 (AX)←(AX)+ 1000 MOV [BX],DL。 存千位的个数。 计算百位的个数 MOV DL,0。 百位的个数计数器 AGAIN2: SUB AX,100。 (AX)100 JC NEXT2 INC DL JMP AGAIN2 NEXT2: ADD AX,100 MOV [BX+1],DL。 存百位的个数 18 MOV DL,0。 十位的个数计数器 AGAIN3: SU。1码制转换十、二进制数、ascii码之间的互相转换。①bcd
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。