汇编语言 大小写与进制转换文档格式.docx

上传人:b****6 文档编号:21106776 上传时间: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

STR13DB0AH,0DH,'

PleaseconfirmyoujustinputedisaLetter'

STR2DB0AH,0DH,'

Pleaseinputthebinarystring,Entertoconfirm'

0AH,0DH,'

STR21DB0AH,0DH,'

ThestringHexadecimalis:

STR3DB0AH,0DH,'

PleaseinputtheHexadecimalstring,Entertoconfirm'

STR31DB0AH,0DH,'

changetobinaryis:

STR4DB0AH,0DH,'

changetoDecimalis:

DATASENDS

 

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS

;

宏定义字符输入

charinMACRO;

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

MOVAH,01H;

系统调用输入一个字符用于功能选择

INT21H;

字符默认输入到AL中

ENDM

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

numinMACRO

charin

SUBAL,48

宏定义字符串输入

strinMACROSTRINGIN;

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

LEADX,STRINGIN;

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

MOVAH,0AH;

0AH字符串输入功能

调用系统中断

ENDM

宏定义字符输出

charoutMACROoutchar;

宏定义将字符outchar输出

PUSHAX

PUSHDX

MOVDL,outchar

MOVAH,02H;

系统调用输出字符outchar

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

POPDX

POPAX

宏定义数字输出

numoutMACROoutnum

MOVDL,outnum

ADDDL,48;

将数值转换为对应得数值字符

宏定义字符串输出

stroutMACROSTRINGOUT;

将字符串STRINGOUT输出

LEADX,STRINGOUT;

将STRIN的偏移地址送到DX寄存器

MOVAH,9;

09H字符串输出功能

宏定义换行

endlMACRO;

宏定义换行

PUSHBX

PUSHCX

MOVDL,0AH;

先输出垂直Tab键

MOVAH,2

调用系统中断实现输出

MOVDL,0DH;

再将输出输出调至段首

POPCX

POPBX

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

outAXMACRObaseNum;

MOVBX,baseNum;

将要转换成的进制存入BX作为除数

CALLoutAXp;

调用进制输出过程

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

outAXpPROC

MOVDX,0;

初始化DX配合AX一起进行处罚操作

MOVCX,0;

用CX计数取得个余数个数

outAXp_Circle:

CMPAX,0;

判断AX中的值是否为0

JEoutAXp_NEXT;

是则跳转

DIVBX;

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

PUSHDX;

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

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

INCCX;

计数循环取得的余数个数

JMPoutAXp_Circle

outAXp_NEXT:

;

循环输出取得的余数

CMPAL,10;

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

JBnout

ADDAL,55;

否则将余数转化为对应的字符10对应字符'

A'

charoutAL

JMPcout

nout:

numoutAL

cout:

LOOPoutAXp_NEXT

RET

outAXpENDP

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

inAXMACRObaseNum;

MOVCX,baseNum;

CALLinAXp;

调用进制输入过程

inAXpPROC

MOVAX,0

inAXp0:

PUSHAX

inAXp1:

charin;

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

CMPAL,13

JEinAXE;

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

CMPAL,'

0'

JBinAXp1;

当输入字符小于'

时,跳转inAXp1,跳转重新进行字符输入

9'

JAinAXnext1;

当输入字符大于'

时,跳转inAXnext1进一步进行比较

SUBAL,48;

当字符在'

-'

之间时,将字符转化为对应的数值

JMPinAXnum;

跳转数值输入

inAXnext1:

时,跳转重新进行字符输入

Z'

JAinAXnext2;

时,跳转inAXnext2进一步进行比较

SUBAL,55;

之间时,将字符转化为对应的数值,并跳转到数值输入

JMPinAXnum

inAXnext2:

a'

z'

JAinAXp1;

SUBAL,87;

inAXnum:

MOVBH,0;

将数值送到AX中

MOVBL,AL

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

JEinAXadd

MULCX;

乘以CX中的进制基数

inAXadd:

ADDAX,BX

JMPinAXp0

inAXE:

POPAX;

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

inAXpENDP

START:

MOVAX,DATAS;

将数据段地址送到AX中

MOVDS,AX;

由AX转送到送到DS

P0:

stroutmenu;

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

charin;

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

1'

JEP1

2'

JEP2

3'

JEP3

4'

JEP4

q'

JEPq

Q'

JMPP0

P1:

endl

stroutSTR1

输入字母到AL中

JBoutrange;

当字符小于'

时超出范围,给出提示信息

JAcmpNext;

当字符大于'

时进一步进行范围的确定

ADDAL,32;

输入的字符范围在'

之间时转换为小写字母

stroutSTR12;

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

JMPoutAL

cmpNext:

JAoutrange;

SUBAL,32;

stroutSTR11;

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

outAL:

charoutAL

outrange:

stroutSTR13;

超出范围,给出提示信息

JMPP0

P2:

stroutSTR2

inAX2;

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

endl

stroutSTR21

outAX16;

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

P3:

stroutSTR3

inAX16;

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

stroutSTR31

outAX2;

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

P4:

stroutSTR4

outAX10;

Pq:

MOVAH,4CH;

调用系统结束

INT21H

CODESENDS

ENDSTART

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

当前位置:首页 > 幼儿教育 > 育儿知识

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

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