,.
实验二 数码转换实验
一、实验目的
(1) 掌握不同进制数及编码相互转换的程序设计方法。 (2) 掌握运算类指令编程及调试方法。 (3) 掌握循环程序的设计方法。
二、实验设备
PC机一台。
三、实验内容及说明
(1) 重复从键盘输入不超过5位的十进制数,按回车键结束输入;
(2) 将该十进制数转换成二进制数;结果以2进制数的形式显示在屏幕上; (3) 如果输入非数字字符,则报告出错信息,重新输入; (4) 直到输入“Q”或‘q’时程序运行结束。
(5) 键盘输入一字符串,以空格结束,统计其中数字字符的个数,并在屏幕显示。 考核方式:完成实验内容(1)(2)(3)(4)通过, 完成实验内容(5)优秀。
转换过程参考流程如图3-2-2所示。
十进制数可以表示为:Dn*10n+Dn-1*10n-1+…+D0*100=? Di*10i 其中Di代表十进制数1、2、3、…、9、0。
上式可以转换为:? Di*10i=(((Dn*10+Dn-1)*10+ Dn-2)*10+…+ D1)*10+ D0
由上式可归纳出十进制数转换为二进制数的方法:从二进制数的最高位Dn开始做乘10
,.
加次位的操作。
依此类推,则可求出二进制数结果。
表3-3-1 数码转换对应关系
十六进制 0 1 2 3 4 5 6 7 8 9 A B C D E F BCD码 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 二进制机器码 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 101 1011 1100 1101 1110 1111 ASCII码 30H 31H 32H 33H 34H 35H 36H 37H 38H 39H 41H 42H 43H 44H 45H 46H 七段码 共阳 40H 79H 24H 30H 19H 12H 02H 78H 00H 18H 08H 03H 46H 21H 06H 0EH 共阴 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 67H 77H 7CH 39H 5EH 79H 71H
,.
四、实验程序
; DATA
SEGMENT
MES DB 0AH,0DH,'The Ascii code of Decimal code are: $' MSG1 DB 0AH,0DH,0AH,0DH,0AH,0DH,'Please Input(Exit:q/Q):$' MSG2 DB 0AH,0DH,'Input: $'
MSG3 DB 0AH,0DH,'Input Error, Please input again!',0AH,0DH,'$'
PAGE
60,132
;本实验将输入的ASCII码转换为二进制,要求输入位数小于5
,.
;BIN DB 2 DUP(0) BUF DB 30H,30H,30H,31H,35H DB 10H DUP(0) N
DW 0 DATA
ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:
MOV AX,DATA MOV DS,AX MOV
ES,AX
MOV DI,OFFSET BUF
CLC
MOV DX,OFFSET MSG1
MOV AH,09H INT 21H
MOV
DX,OFFSET MSG2 MOV AH,09H
INT 21H
A1: MOV
AH,01H
INT
21H
CMP AL,'Q'
JZ EXIT CMP AL,'q' JZ EXIT CMP AL,39H JA ERROR
INC N
STOSB
CMP AL,13 JNE A1
MOV CX,N
DEC CX MOV BX,000AH
MOV
SI,OFFSET BUF
;显示字符串 ;接收键盘输入
;将输入数据存放在BUF缓冲区中
,.
MOV AND CMP JB
AL,DS:[SI]
;取低4位
AL,0FH AL,0AH C3
PROC MOV AND MOV SHR CMP JB
ADD ADD MOV MOV INT
NEAR
AL,DS:[SI]
;取高4位
CL,4
;show character ;是否是A以上的数
AL,0F0H AL,CL AL,0AH C2 AL,07H AL,30H 21H
MOV N,0 LOOP START
MOV MOV LODSB CMP JE
SUB DEC IMUL MOV LODSB MOV SUB ADD LOOP MOV MOV MOV INT
SI SI
;显示高字节 ;显示低字节
SHOW SHOW
INC CALL DEC CALL
AH,0 AL,30H AX,DX A2 [SI],AX 21H
DX,OFFSET MES AH,09H CX,1 A3 AL,30H CX BX
DX,AX
;将BUF中数据转换为二——十进制数
AH,0 DX,0
A2:
A3:
SHOW
C2:
DL,AL AH,06H