为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

10进制转16进制汇编程序

2017-09-23 10页 doc 23KB 51阅读

用户头像

is_769254

暂无简介

举报
10进制转16进制汇编程序10进制转16进制汇编程序 ;--------------------------------------------; ;Name:十进制(-32768~32767)转换16进制汇编程序-; ;Desccription:输入一个十进制,程序转为该数的-; ;十六进制数从屏幕输出 ; ;Author:160409108 ; ;Date: 2011-11-13 ; ;--------------------------------------------; DATA SEGMENT BUF DW 7 DW ?...
10进制转16进制汇编程序
10进制转16进制汇编程序 ;--------------------------------------------; ;Name:十进制(-32768~32767)转换16进制汇编程序-; ;Desccription:输入一个十进制,程序转为该数的-; ;十六进制数从屏幕输出 ; ;Author:160409108 ; ;Date: 2011-11-13 ; ;--------------------------------------------; DATA SEGMENT BUF DW 7 DW ? DW 8 DUP(0) ORG 10H DAT1 DW 12 DUP(0) ORG 20H FIRST DW ? ORG 30H SECOND DB ? ORG 40H THIRD DB 10 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,OFFSET BUF MOV AH,0AH INT 21H LEA BX,BUF LEA DI,DAT1 ;------------------------------------------ ;ASC码转换BCD码,若为负数推迟一位转码 ;------------------------------------------ mov al,[BX+2] CMP al,'-' JNE SP1 INC BX MOV AL,[BX] ;负数------判断实际输入位数,将DI指针指向相应位置 MOV CL,6 SUB CL,AL MOV CH,0 LP3: INC DI INC DI LOOP LP3 ;结束 JMP NEXT SP1: MOV AL,[BX+1] ;正数------判断实际输入位数,将DI指针指向相应位置 MOV CL,5 SUB CL,AL MOV CH,0 LP2: INC DI INC DI LOOP LP2 ;结束 NEXT: MOV AX,[BX+2] ;ASC转BCD码 SUB AX,30H MOV [BX+2],AX MOV AX,[BX+3] SUB AX,30H MOV [BX+3],AX MOV AX,[BX+4] SUB AX,30H MOV [BX+4],AX MOV AX,[BX+5] SUB AX,30H MOV [BX+5],AX MOV AX,[BX+6] SUB AX,30H MOV [BX+6],AX ;------------------------------------------- ;每位分别存入10h,最后一位为符号值 DW定义 ;------------------------------------------- MOV CX,[BX+1] LP1: MOV AL,[BX+2] ;将数据存入10H MOV [DI],AL INC BX INC DI INC DI LOOP LP1 ;MOV AL,[BX+3] ;MOV [DI+2],AL ;MOV AL,[BX+4] ;MOV [DI+4],AL ;MOV AL,[BX+5] ;MOV [DI+6],AL ;MOV AL,[BX+6] ;MOV [DI+8],AL LEA BX,BUF LEA DI,DAT1 MOV AL,[BX+2] MOV [DI+10],AL ;若为负数则存负号ASC码,不是负数存第二个定义数 ;------------------------------------------- ;分别计算各个位的真实值存入20H DW定义 BP ;------------------------------------------- LEA BP,FIRST LEA BX,SECOND LEA DI,DAT1 MOV AX,[DI] ;万位 MOV CX,10000 MUL CX MOV [BP],AX MOV AX,[DI+2] ;千位 MOV CX,1000 MUL CX MOV [BP+2],AX MOV AX,[DI+4] ;百位 MOV CX,100 MUL CX MOV [BP+4],AX MOV AX,[DI+6] ;十位 MOV CX,10 MUL CX MOV [BP+6],AX MOV AX,[DI+8] ;个位 MOV CX,1 MUL CX MOV [BP+8],AX ;------------------------------------------- ;分别相加存入30H DW定义 BX ;------------------------------------------- MOV AX,[BP] ADD AX,[BP+2] ADD AX,[BP+4] ADD AX,[BP+6] ADD AX,[BP+8] MOV [BX],AX ;------------------------------------------- ;判定正负数,负数转补码 ;------------------------------------------- MOV AX,[DI+10] CMP AX,'-' JNE JP9 MOV AX,[BX] NEG AX MOV [BX],AX JP9: ;------------------------------------------- ;判断每四位数值真值,<=或是>9,由此给定ASC码值 ;------------------------------------------- LEA DI,THIRD MOV AX,[BX] AND AX,000FH CMP AL,9 JG JP3 ;若大于9,加37H转换为ABCD。。的ASC码 ADD AL,30H ;若小于等于9,加30H转换1234。。的ASC码 JMP NEXT1 JP3: ADD AL,37H NEXT1: MOV [DI],AL INC DI MOV CL,4 MOV AX,[BX] SHR AX,CL AND AX,000FH CMP AL,9 JG JP4 ADD AL,30H JMP NEXT2 JP4: ADD AL,37H NEXT2: MOV [DI],AL INC DI MOV CL,8 MOV AX,[BX] SHR AX,CL AND AX,000FH CMP AL,9 JG JP5 ADD AL,30H JMP NEXT3 JP5: ADD AL,37H NEXT3: MOV [DI],AL INC DI MOV CL,12 MOV AX,[BX] SHR AX,CL AND AX,000FH CMP AL,9 JG JP6 ADD AL,30H JMP NEXT4 JP6: ADD AL,37H NEXT4: MOV [DI],AL INC DI ;------------------------------------------- ;最终输出 ;------------------------------------------- LEA DI,THIRD MOV AH,02H MOV DL,0AH INT 21H MOV DL,[DI+3] MOV AH,2 INT 21H MOV DL,[DI+2] MOV AH,2 INT 21H MOV DL,[DI+1] MOV AH,2 INT 21H MOV DL,[DI] MOV AH,2 INT 21H ;------------------------------------------- ;返回DOS ;------------------------------------------- MOV AH,4CH INT 21H CODE ENDS END START
/
本文档为【10进制转16进制汇编程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索