汇编语言 大小写与进制转换.docx

上传人:b****6 文档编号:7970558 上传时间:2023-01-27 格式:DOCX 页数:11 大小:66.83KB
下载 相关 举报
汇编语言 大小写与进制转换.docx_第1页
第1页 / 共11页
汇编语言 大小写与进制转换.docx_第2页
第2页 / 共11页
汇编语言 大小写与进制转换.docx_第3页
第3页 / 共11页
汇编语言 大小写与进制转换.docx_第4页
第4页 / 共11页
汇编语言 大小写与进制转换.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

汇编语言 大小写与进制转换.docx

《汇编语言 大小写与进制转换.docx》由会员分享,可在线阅读,更多相关《汇编语言 大小写与进制转换.docx(11页珍藏版)》请在冰豆网上搜索。

汇编语言 大小写与进制转换.docx

汇编语言大小写与进制转换

初始时界面:

1.大小写字母的相互转换

2.二进制数向16进制数的转换

3.16进制数向2进制数的转换

4.16进制数向10进制数的转换

源程序:

DATASSEGMENT

menuDB0AH,0DH,'-----------------------------------------'

DB0AH,0DH,'Pleasechoiceaction:

',0AH,0DH

DB0AH,0DH,'1.Letterchange'

DB0AH,0DH,'2.BinarytoHexadecimal'

DB0AH,0DH,'3.HexadecimaltoBinary'

DB0AH,0DH,'4.HexadecimaltoDecimal'

DB0AH,0DH,'q.Exit'

DB0AH,0DH,'-----------------------------------------',0AH,0DH,'$'

STR1DB0AH,0DH,'PleaseinputaLetter',0AH,0DH,'$'

STR11DB0AH,0DH,'ThebigLetteris:

',0AH,0DH,'$'

STR12DB0AH,0DH,'ThelitteLetteris:

',0AH,0DH,'$'

STR13DB0AH,0DH,'PleaseconfirmyoujustinputedisaLetter',0AH,0DH,'$'

STR2DB0AH,0DH,'Pleaseinputthebinarystring,Entertoconfirm',0AH,0DH,'$'

STR21DB0AH,0DH,'ThestringHexadecimalis:

',0AH,0DH,'$'

STR3DB0AH,0DH,'PleaseinputtheHexadecimalstring,Entertoconfirm',0AH,0DH,'$'

STR31DB0AH,0DH,'changetobinaryis:

',0AH,0DH,'$'

STR4DB0AH,0DH,'changetoDecimalis:

',0AH,0DH,'$'

DATASENDS

 

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS

;宏定义字符输入

charinMACRO;宏定义无参数的字符输入功能

MOVAH,01H;系统调用输入一个字符用于功能选择

INT21H;字符默认输入到AL中

ENDM

;宏定义数字输入数字输入到AL中

numinMACRO

charin

SUBAL,48

ENDM

;宏定义字符串输入

strinMACROSTRINGIN;将字符串输入到字符串STRINGIN中

LEADX,STRINGIN;将STRINGIN的偏移地址送到DX寄存器

MOVAH,0AH;0AH字符串输入功能

INT21H;调用系统中断

ENDM

;宏定义字符输出

charoutMACROoutchar;宏定义将字符outchar输出

PUSHAX

PUSHDX

MOVDL,outchar

MOVAH,02H;系统调用输出字符outchar

INT21H;调用系统中断调用过程中会改变AL中的值,故将AX中的值入栈保存

POPDX

POPAX

ENDM

;宏定义数字输出

numoutMACROoutnum

PUSHAX

PUSHDX

MOVDL,outnum

ADDDL,48;将数值转换为对应得数值字符

MOVAH,02H;系统调用输出字符outchar

INT21H;调用系统中断调用过程中会改变AL中的值,故将AX中的值入栈保存

POPDX

POPAX

ENDM

;宏定义字符串输出

stroutMACROSTRINGOUT;将字符串STRINGOUT输出

PUSHAX

PUSHDX

LEADX,STRINGOUT;将STRIN的偏移地址送到DX寄存器

MOVAH,9;09H字符串输出功能

INT21H;调用系统中断

POPDX

POPAX

ENDM

;宏定义换行

endlMACRO;宏定义换行

PUSHAX

PUSHBX

PUSHCX

PUSHDX

MOVDL,0AH;先输出垂直Tab键

MOVAH,2

INT21H;调用系统中断实现输出

MOVDL,0DH;再将输出输出调至段首

INT21H;调用系统中断

POPDX

POPCX

POPBX

POPAX

ENDM

 

;宏定义以baseNum进制输出AX中的数值

outAXMACRObaseNum;宏定义换行

PUSHAX

PUSHBX

PUSHCX

PUSHDX

MOVBX,baseNum;将要转换成的进制存入BX作为除数

CALLoutAXp;调用进制输出过程

POPDX

POPCX

POPBX

POPAX

ENDM

;过程定义以baseNum进制形式输出存放在AX中的数值过程

outAXpPROC

MOVDX,0;初始化DX配合AX一起进行处罚操作

MOVCX,0;用CX计数取得个余数个数

outAXp_Circle:

CMPAX,0;判断AX中的值是否为0

JEoutAXp_NEXT;是则跳转

DIVBX;不是则进行除10运算商保存在AX中余数保存在DX中

PUSHDX;将对10取到的余数入栈保存

MOVDX,0;将DX中的余数清空以便下一步对AX中的数进行除10运算

INCCX;计数循环取得的余数个数

JMPoutAXp_Circle

outAXp_NEXT:

;循环输出取得的余数

POPAX

CMPAL,10;当余数小于10时,直接将数值输出

JBnout

ADDAL,55;否则将余数转化为对应的字符10对应字符'A'

charoutAL

JMPcout

nout:

numoutAL

cout:

LOOPoutAXp_NEXT

RET

outAXpENDP

 

;宏定义以baseNum进制输入数据串到AX中,可输入2-37进制

inAXMACRObaseNum;宏定义换行

PUSHBX

PUSHCX

PUSHDX

MOVCX,baseNum;将要转换成的进制存入BX作为除数

CALLinAXp;调用进制输入过程

POPDX

POPCX

POPBX

ENDM

;过程定义以baseNum进制形式输出存放在AX中的数值过程

inAXpPROC

MOVAX,0

inAXp0:

PUSHAX

inAXp1:

charin;逐个字符进行输入,结果存放到AX中

CMPAL,13

JEinAXE;当按下Enter键后跳转AX的输出

CMPAL,'0'

JBinAXp1;当输入字符小于'0'时,跳转inAXp1,跳转重新进行字符输入

CMPAL,'9'

JAinAXnext1;当输入字符大于'9'时,跳转inAXnext1进一步进行比较

SUBAL,48;当字符在'0'-'9'之间时,将字符转化为对应的数值

JMPinAXnum;跳转数值输入

inAXnext1:

CMPAL,'A'

JBinAXp1;当输入字符小于'A'时,跳转重新进行字符输入

CMPAL,'Z'

JAinAXnext2;当输入字符大于'Z'时,跳转inAXnext2进一步进行比较

SUBAL,55;当字符在'A'-'Z'之间时,将字符转化为对应的数值,并跳转到数值输入

JMPinAXnum

inAXnext2:

CMPAL,'a'

JBinAXp1;当输入字符小于'A'时,跳转重新进行字符输入

CMPAL,'z'

JAinAXp1;当输入字符小于'A'时,跳转重新进行字符输入

SUBAL,87;当字符在'a'-'z'之间时,将字符转化为对应的数值,并跳转到数值输入

JMPinAXnum

inAXnum:

MOVBH,0;将数值送到AX中

MOVBL,AL

POPAX

CMPAX,0;当AX中的数值为0时,跳过乘法操作

JEinAXadd

MULCX;乘以CX中的进制基数

inAXadd:

ADDAX,BX

JMPinAXp0

inAXE:

POPAX;将计算得到的数值出栈到AX中

RET

inAXpENDP

 

START:

MOVAX,DATAS;将数据段地址送到AX中

MOVDS,AX;由AX转送到送到DS

P0:

stroutmenu;字符串输出宏调用输出menu的提示菜单

charin;宏调用字符输入选择相应功能

CMPAL,'1'

JEP1

CMPAL,'2'

JEP2

CMPAL,'3'

JEP3

CMPAL,'4'

JEP4

CMPAL,'q'

JEPq

CMPAL,'Q'

JEPq

JMPP0

P1:

endl

stroutSTR1

charin;输入字母到AL中

CMPAL,'A'

JBoutrange;当字符小于'A'时超出范围,给出提示信息

CMPAL,'Z'

JAcmpNext;当字符大于'Z'时进一步进行范围的确定

ADDAL,32;输入的字符范围在'A'-'Z'之间时转换为小写字母

stroutSTR12;输出AL中的字符前给出提示信息

JMPoutAL

cmpNext:

CMPAL,'a'

JBoutrange;当字符小于'a'时超出范围,给出提示信息

CMPAL,'z'

JAoutrange;当字符大于'z'时超出范围,给出提示信息

SUBAL,32;输入的字符范围在'a'-'z'之间时转换为小写字母

stroutSTR11;输出AL中的字符前给出提示信息

outAL:

charoutAL

JMPP0

outrange:

stroutSTR13;超出范围,给出提示信息

JMPP0

P2:

stroutSTR2

inAX2;以2进制输入数据串到到AX中

endl

stroutSTR21

outAX16;以16进制的形式输出AX中的数值

JMPP0

P3:

stroutSTR3

inAX16;以16进制输入数据串到到AX中

endl

stroutSTR31

outAX2;以二进制的形式输出AX中的数据

JMPP0

P4:

stroutSTR3

inAX16;以16进制输入数据串到到AX中

endl

stroutSTR4

outAX10;以二进制的形式输出AX中的数据

JMPP0

Pq:

MOVAH,4CH;调用系统结束

INT21H

CODESENDS

ENDSTART

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1