东北大学自动化复习课件微机原理及接口技术(第三章-6).ppt
文本预览下载声明
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 19 例 CPU要处理从键盘输入的某一数据,如键入“1234” 需将该数据串进行转换十六进制后才能应用。 20 例1 将BX寄存器中的内容以十六进制形式显示出来。 BX是一个16位寄存器 二进制 1010 1001 0011 1110 用十六进显示时,每4位用一个字符显示,共4个 其中 0000 →’0’ 30H , 1010 →’A’ 41H 0001 →’1’ 31H , 1011 →’B’ 42H 、、 、、 1001 →’9’ 39H , 1111 →’F’ 46H ? 十六进制 A 9 3 E 屏幕上的显示 ‘A’ ‘9’ ‘3’ ‘E’ 对应的ASCII 41H 39H 33H 45H 21 算法: 取出要显示的某4位,转换为对应的ASCII码, 再调用DOS系统功能进行显示。 1) 对于0000~1001(0~9), 先扩展成一个字节,高4位清0, 加上30H后, 即可得字符’0’~’9’对应的ASCII码。 0000 0001B + 30H= 31H 0000 1001B + 30H=39H 0001B ‘1’ 1001B ‘9’ 2) 对于1010~1111(A~F), 先扩展成一个字节,高4位清0, 加上30H后, 还要再加上07H,才能得到’A’~’F’ 对应的ASCII码 0000 1010B+30H+07H = 41H 0000 1111B+30H+07H =46H 1010B ‘A’ 1111B ‘F’ 22 code SEGMENT ASSUME CS:code start: MOV CH, 4 ;字符个数 MOV CL, 4 ;循环移位次数 next: ROL BX, CL ;取显示位的值 MOV DL, BL ;保存在DL中 AND DL, 0FH ;清除高4位 ADD DL, 30H ;转变为数字的ASCII CMP DL, 39H ;大于39H, 则应转变 JLE print ;为字母A~F的ASCII ADD DL, 07H print: MOV AH, 2H ;显示DL中的字符 INT 21H DEC CH ;显示结束? JNZ next MOV AH, 4CH ;返回DOS INT 21H code ENDS END start 显示字符个数CH=4 循环移位次数CL=4 BX循环左移4位,将要显示的值移至低4位,保存在DL中 清DL 的高4位, 只保留要显示位的值 DL ← DL+30H 完成数值0~9的ASCII码转换 Y N DL←DL+07H 完成数值A~F的ASCII码转换 用02功能显示DL中的字符 Y N 返回DOS DL 超出39H? CH ←CH-1转换结束? 开始 23 思考: 1. 例1采用的是大写字母A~F进行显示, 若采用小写字符a ~ f 进行显示,程序如何改写? 1010 0011 1001 1110 ‘A39E’ 或 ‘a39e’ 2. 编程将 CPU 内 14
显示全部