微机原理换行代码_东华大学微机原理课程设计--代码转换

代码转换

完成一个字母或数制之间的转化程序,主程序分别具有5种可选择的子功能,按相应的字符可分别进入相应的子功能并在屏幕上显示结果,按“q”键退出。

5种可选择的子功能分别为:

1)实现小写字母向大写字母的转换

2)实现大写字母向小写字母的转换

3)实现二进制数向十六进制数的转换

4)实现十六进制数向二进制数的转换

5)实现十六进制数向十进制数的转换

要求显示美观,操作界面友好。

Code、

;===============================================================================

;

DHU.asm--代码转换

;

微机汇编语言程序设计

;===============================================================================

;定义数据段

DATAS SEGMENT

BUFFER DB 40

DUP(?)

CAPTCHAMA DB 4

DUP(?)

MSG1 DB "PLEASE

INPUT YOUR CHOICE: $"

MSG2 DB "1:Lowcase

to Capital:$"

MSG3 DB "2:Capital

to Lowcase:$"

MSG4 DB "3:Binary

to Hex:$"  ;在存储器中存放供显示的数据,以下类推

MSG5 DB "4:Hex to

Binary:$"

MSG6 DB "5:Hex to

Decimal:$"

MSG18 DB "6:Decimal

to Hex:$"

MSG19 DB "7:DeFrac

to BiFrac:$"

MSG11 DB "q:Press q

to Quit $"

MSG7 DB "PLEASE

INPUT SOME LOWERCASE CHARACTERS:$"

MSG8 DB "PLEASE

INPUT SOME(<9) BINARY NUMBERS:$"

MSG9 DB "PLEASE

INPUT SOME(<21) HEX NUMBER:$"

MSG10 DB "All

Rights Reserved by DHU_Wyl $ "

MSG12 DB

"Attention:Your Entered Incorrectly! $"

MSG13 DB "Please

Press Enter,Try Again! $"

MSG14 DB "PLEASE

INPUT SOME CAPITAL:$"

MSG15 DB "PLEASE

INPUT SOME(<5) HEX NUMBER:$"

MSG16 DB "PLEASE

INPUT SOME(<5) FRACTIONAL:$"

MSG17 DB "PLEASE

INPUT DECIMAL(<65536):$"

MSG20 DB "THE

ANSWER IS:$"

MSG21 DB "PRESS ANY

KEY TO RETURN!$"

MSG22 DB "PLEASE

INPUT DECIMAL Fractional(.XXXX):$"

MSG23 DB

"DATATIME:$"

MSG24 DB "Please

enter the verification code:$"

MSG25 DB "

EXACTNESS,PRESS ANY KEY TO MAINMENU!$"

DATAS ENDS

;定义堆栈段

STACKS SEGMENT

DB 100 DUP(0)  ;在存储器的某个区域建立一个堆栈区

STACKS ENDS

;定义代码段

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS;段寄存器说明

START: MOV AX,DATAS

;取数据段段地址

MOV DS,AX

;建立数据段的可寻址性

CALL CAPTCHA

;调用验证码子函数

;------------------------------返回DOS系统----------------------------------

EXIT:

MOV AH,4CH  ;返回DOS系统

INT 21H

;中断调用

;-------------------------------验证码子函数--------------------------------

CAPTCHA PROC

NEAR

CAP:

CALL CAPINPUT

;调用验证码输入子函数

MOV AH,02

;设置光标位置

MOV DH,3H

;3行15列

MOV

DL,15

INT 10H

LEA SI,MSG24

MOV DX,SI

MOV AH,09

;显示MSG24的内容

INT 21H

;读取时钟秒数作为随机数,输入正确则进入主界面,输入错误则循环验证

MOV AH,02H

;读取时间,入口参数:AH=02H

INT

1AH

PUSH DX

;入栈,DH=BCD码格式的秒

AND

DH,0F0H  ;DH=BCD码格式的秒

MOV

CL,04H

SHR DH,CL

;取秒的十位

LEA

SI,CAPTCHAMA

ADD DH,30H

;转换为ASCII码后在屏幕输出

MOV DL,DH

MOV AH,02H

INT 21H

MOV

[SI],DH  ;保存到CAPTCHAMA字节单元

INC SI

POP DX

;出栈,DH=BCD码格式的秒

AND DH,0FH

;取秒的个位

ADD DH,30H

;转换为ASCII码后在屏幕输出

MOV

DL,DH

MOV

AH,02H

INT

21H

MOV

[SI],DH  ;保存到CAPTCHAMA字节单元

MOV AH,02

;设置光标位置

MOV DH,5H ;第5行

MOV DL,50 ;第50列

INT 10H

MOV AH,01H

;等待键盘输入

INT 21H

MOV CL,0H

CMP AL,[SI-1]

;键盘输入AL与秒的十位比较,相等则跳转CAPRIGHT0

JZ CAPRIGHT0

MOV CL,1H

CAPRIGHT0: MOV

AH,01H  ;键盘输入AL与秒的个位比较,相等则跳转CAPRIGHT1

INT 21H

CMP AL,[SI]

JZ CAPRIGHT1

MOV CL,1H

CAPRIGHT1:CMP CL,1

;验证码输入错误则跳转CAINPERR1

JNZ CAP1

;验证码输入正确则跳转CAP1

CAINPERR1:CALL

CAPINPUT

MOV DL,7

;声音提醒</

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值