【微机原理 实验】 ASCII码表示的十进制数、二进制数和BCD的互换编程实验(含汇编代码)
程序员文章站
2024-02-02 15:42:46
...
实验四 ASCII码表示的十进制数、二进制数和BCD的互换编程实验
更多微机实验:https://blog.csdn.net/yxp189?assign_skin=skin-yellow
注意:未经允许,请勿转载!
转载请标明出处~
适用课程:微机原理与接口技术(实验)
选用教材:微型计算机原理与接口技术-中国科学技术大学出版社
一、实验要求和目的
1.了解汇编语言中的十进制、二进制、BCD码的表示形式;
2.了解BCD值和ASCII值的区别
3.了解如何查表进行数值转换及快速计算。
4.掌握利用汇编语言进行进制转换的方法。
二、实验内容
(1)将一个用ASCII码表示的多位十进制转换为二进制,要求十进制不大于65535(16位),且输入数码为无符号数。
(2)将用ASCII码表示的数字串,转化为压缩的BCD码。
三、实验提示
(1)十进制数字串转二进制从最高位开始,重复进行“高位*10+低位”的操作,用公式表示为ΣDi×10i=((„(Dn×10+Dn-1)×10)+Dn-2)×10+„+D1)×10+D0
(2)将ASCII码转换为压缩BCD码,将ASCII码的高4位置0,再将十位ASCII码的低4位左移至高4位,再与个位ASCII码相或。采用约定寄存器法传递参数。
实验代码:
1. 实验(1)
将一个用ASCII码表示的多位十进制转换为二进制,要求十进制不大于65535(16位),且输入数码为无符号数。
;Author:YXP
;CSDN:yxp189
;Email:[email protected]
;如有问题,欢迎和我联系~
;转载请标明出处~
STACKS SEGMENT STACK
DW 128 DUP(?)
STACKS ENDS
DATAS SEGMENT
NUM1 DW 5 DUP(0)
NUM2 DW 1 DUP(0)
NUM3 DW 1 DUP(0)
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START: MOV AX,DATAS
MOV DS,AX
MOV NUM3,10
MOV CX,5
MOV SI,OFFSET NUM1
READ1:
MOV AH,01H
INT 21H
MOV DL,AL
AND DL,0FH
AND DH,00H
MOV [SI],DX
INC SI
INC SI
LOOP READ1
CLC
MOV CX,5
MOV SI,OFFSET NUM1
OP:
MOV AX,NUM2
MUL NUM3
MOV BX,AX
MOV AX,[SI]
ADC AX,BX
MOV NUM2,AX
INC SI
INC SI
LOOP OP
MOV AX,NUM2
DIV NUM3
MOV NUM2,AX
MOV AX,4C00H
INT 21H
CODES ENDS
END START
2. 实验(2)
将用ASCII码表示的数字串,转化为压缩的BCD码。
;Author:YXP
;CSDN:yxp189
;Email:[email protected]
;如有问题,欢迎和我联系~
;转载请标明出处~
STACKS SEGMENT STACK
DW 128 DUP(?) ;注意这里只有128个字节
STACKS ENDS
DATAS SEGMENT
NUM1 DB 5 DUP(0)
NUM2 DW 1 DUP(0)
NUM3 DW 1 DUP(0)
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START: MOV AX,DATAS
MOV DS,AX
MOV CX,4
MOV BX,1
MOV SI,OFFSET NUM1
READ1:
MOV AH,01H
INT 21H
MOV DL,AL
AND DL,0FH
TEST CX,0001H
JZ AD
OR [BX][SI],DL
;INC SI
DEC BX
LOOP READ1
JMP OUTOP
AD:
OR [BX][SI],DL
SHL BYTE PTR[BX][SI],4
LOOP READ1
OUTOP:
CLC
MOV CX,4
MOV SI,OFFSET NUM1
POUT: MOV AH,02H
MOV DL,[SI]
TEST CX,0001H
JZ YIWEI
AND DL,0FH
OR DL,30H
INC SI
INT 21H
LOOP POUT
JMP ENDD
YIWEI: AND DL,0FH
OR DL,30H
SHR BYTE PTR[SI],4
INT 21H
LOOP POUT
ENDD:
MOV AX,4C00H ;退出程序
INT 21H
CODES ENDS
END START
上一篇: 汇编语言实验(八)之删除数组中为零的元素