1、汇编语言 大小写与进制转换初始时界面:1.大小写字母的相互转换2.二进制数向16进制数的转换3. 16进制数向2进制数的转换4. 16进制数向10进制数的转换源程序:DATAS SEGMENTmenu DB 0AH, 0DH, - DB 0AH, 0DH, Please choice action:, 0AH, 0DH DB 0AH, 0DH, 1.Letter change DB 0AH, 0DH, 2.Binary to Hexadecimal DB 0AH, 0DH, 3.Hexadecimal to Binary DB 0AH, 0DH, 4.Hexadecimal to Decima
2、l DB 0AH, 0DH, q.Exit DB 0AH, 0DH, -, 0AH, 0DH,$STR1 DB 0AH, 0DH, Please input a Letter, 0AH, 0DH,$STR11 DB 0AH, 0DH, The big Letter is:, 0AH, 0DH,$STR12 DB 0AH, 0DH, The litte Letter is:, 0AH, 0DH,$STR13 DB 0AH, 0DH, Please confirm you just inputed is a Letter, 0AH, 0DH,$STR2 DB 0AH, 0DH, Please in
3、put the binary string, Enter to confirm, 0AH, 0DH, $STR21 DB 0AH, 0DH, The string Hexadecimal is:, 0AH, 0DH, $STR3 DB 0AH, 0DH, Please input the Hexadecimal string, Enter to confirm, 0AH, 0DH, $STR31 DB 0AH, 0DH, change to binary is:, 0AH, 0DH, $STR4 DB 0AH, 0DH, change to Decimal is:, 0AH, 0DH, $DA
4、TAS ENDSCODES SEGMENTASSUME CS: CODES, DS: DATAS;宏定义 字符输入charin MACRO ;宏定义无参数的字符输入功能 MOV AH, 01H ;系统调用 输入一个字符用于功能选择 INT 21H ;字符默认输入到AL中ENDM;宏定义 数字输入 数字输入到AL中numin MACRO charin SUB AL, 48ENDM;宏定义 字符串输入strin MACRO STRINGIN ;将字符串输入到字符串STRINGIN中 LEA DX, STRINGIN ;将STRINGIN的偏移地址送到DX寄存器 MOV AH, 0AH ;0AH字符
5、串输入功能 INT 21H ;调用系统中断ENDM ;宏定义 字符输出charout MACRO outchar ;宏定义 将字符outchar输出 PUSH AX PUSH DX MOV DL, outchar MOV AH, 02H ;系统调用 输出字符outchar INT 21H ;调用系统中断 调用过程中会改变AL中的值,故将AX中的值入栈保存 POP DX POP AXENDM;宏定义 数字输出numout MACRO outnum PUSH AX PUSH DX MOV DL, outnum ADD DL, 48 ;将数值转换为对应得数值字符 MOV AH, 02H ;系统调用
6、输出字符outchar INT 21H ;调用系统中断 调用过程中会改变AL中的值,故将AX中的值入栈保存 POP DX POP AXENDM;宏定义 字符串输出strout MACRO STRINGOUT ;将字符串STRINGOUT输出 PUSH AX PUSH DX LEA DX, STRINGOUT ;将STRIN的偏移地址送到DX寄存器 MOV AH, 9 ;09H字符串输出功能 INT 21H ;调用系统中断 POP DX POP AXENDM;宏定义 换行endl MACRO ;宏定义换行 PUSH AX PUSH BX PUSH CX PUSH DX MOV DL, 0AH ;
7、先输出垂直Tab键 MOV AH, 2 INT 21H ;调用系统中断实现输出 MOV DL, 0DH ;再将输出输出调至段首 INT 21H ;调用系统中断 POP DX POP CX POP BX POP AXENDM;宏定义 以baseNum进制输出AX中的数值outAX MACRO baseNum ;宏定义换行 PUSH AX PUSH BX PUSH CX PUSH DX MOV BX, baseNum ;将要转换成的进制存入BX作为除数 CALL outAXp ;调用进制输出过程 POP DX POP CX POP BX POP AXENDM;过程定义 以baseNum进制形式输出
8、存放在AX中的数值过程outAXp PROC MOV DX, 0 ;初始化DX配合AX一起进行处罚操作 MOV CX, 0 ;用CX计数取得个余数个数 outAXp_Circle: CMP AX, 0 ;判断AX中的值是否为0 JE outAXp_NEXT ;是则跳转 DIV BX ;不是则进行除10运算 商保存在AX中 余数保存在DX中 PUSH DX ;将对10取到的余数入栈保存 MOV DX, 0 ;将DX中的余数清空 以便下一步对AX中的数进行除10运算 INC CX ;计数循环取得的余数个数 JMP outAXp_Circle outAXp_NEXT: ;循环输出取得的余数 POP
9、AX CMP AL, 10 ;当余数小于10时,直接将数值输出 JB nout ADD AL, 55 ;否则将余数转化为对应的字符10对应字符A charout AL JMP cout nout: numout ALcout: LOOP outAXp_NEXT RET outAXp ENDP;宏定义 以baseNum进制输入数据串到AX中,可输入2-37进制inAX MACRO baseNum ;宏定义换行 PUSH BX PUSH CX PUSH DX MOV CX, baseNum ;将要转换成的进制存入BX作为除数 CALL inAXp ;调用进制输入过程 POP DX POP CX P
10、OP BXENDM;过程定义 以baseNum进制形式输出存放在AX中的数值过程inAXp PROC MOV AX, 0inAXp0: PUSH AXinAXp1: charin ;逐个字符进行输入, 结果存放到AX中 CMP AL, 13 JE inAXE ;当按下Enter键后跳转AX的输出 CMP AL, 0 JB inAXp1 ;当输入字符小于0时,跳转inAXp1,跳转重新进行字符输入 CMP AL, 9 JA inAXnext1 ;当输入字符大于9时,跳转inAXnext1进一步进行比较 SUB AL, 48 ;当字符在0-9之间时,将字符转化为对应的数值 JMP inAXnum
11、;跳转数值输入 inAXnext1: CMP AL, A JB inAXp1 ;当输入字符小于A时,跳转重新进行字符输入 CMP AL, Z JA inAXnext2 ;当输入字符大于Z时,跳转inAXnext2进一步进行比较 SUB AL, 55 ;当字符在A-Z之间时,将字符转化为对应的数值,并跳转到数值输入 JMP inAXnum inAXnext2: CMP AL, a JB inAXp1 ;当输入字符小于A时,跳转重新进行字符输入 CMP AL, z JA inAXp1 ;当输入字符小于A时,跳转重新进行字符输入 SUB AL, 87 ;当字符在a-z之间时,将字符转化为对应的数值,
12、并跳转到数值输入 JMP inAXnum inAXnum:MOV BH, 0 ;将数值送到AX中 MOV BL, AL POP AX CMP AX, 0 ;当AX中的数值为0时,跳过乘法操作 JE inAXadd MUL CX ;乘以CX中的进制基数inAXadd:ADD AX, BX JMP inAXp0 inAXE: POP AX ;将计算得到的数值出栈到AX中 RET inAXp ENDPSTART: MOV AX, DATAS ;将数据段地址送到AX中 MOV DS, AX ;由AX转送到送到DS P0: strout menu ;字符串输出宏调用 输出menu的提示菜单 charin
13、 ;宏调用 字符输入 选择相应功能 CMP AL, 1 JE P1 CMP AL, 2 JE P2 CMP AL, 3 JE P3 CMP AL, 4 JE P4 CMP AL, q JE Pq CMP AL, Q JE Pq JMP P0 P1: endl strout STR1 charin ;输入字母到AL中 CMP AL, A JB outrange ;当字符小于A时超出范围,给出提示信息 CMP AL, Z JA cmpNext ;当字符大于Z时进一步进行范围的确定 ADD AL, 32 ;输入的字符范围在A-Z之间时转换为小写字母 strout STR12 ;输出AL中的字符前给出
14、提示信息 JMP outAL cmpNext: CMP AL, a JB outrange ;当字符小于a时超出范围,给出提示信息 CMP AL, z JA outrange ;当字符大于z时超出范围,给出提示信息 SUB AL, 32 ;输入的字符范围在a-z之间时转换为小写字母 strout STR11 ;输出AL中的字符前给出提示信息 outAL: charout AL JMP P0 outrange: strout STR13 ;超出范围,给出提示信息 JMP P0 P2: strout STR2 inAX 2 ;以2进制输入数据串到到AX中 endl strout STR21 outAX 16 ;以16进制的形式输出AX中的数值 JMP P0 P3: strout STR3 inAX 16 ;以16进制输入数据串到到AX中 endl strout STR31 outAX 2 ;以二进制的形式输出AX中的数据 JMP P0 P4: strout STR3 inAX 16 ;以16进制输入数据串到到AX中 endl strout STR4 outAX 10 ;以二进制的形式输出AX中的数据 JMP P0 Pq: MOV AH, 4CH ;调用 系统结束 INT 21H CODES ENDSEND START
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1