汇编:编写一个将16位二进制数转化成BCD码的程序,要求注释。
1、首先左移要转换的二进制码1位; 左移之后,BCD码分别置于百位、十位、个位; 如果移位后所在的BCD码列大于或等于5,则对该值加3;继续左移的过程直至全部移位完成,并检查每一列对应的bcd码是否
2、接着看信号列表。
3、然后二进制代码设计。
4、十进制代码。
5、十六进制,最后就完成了。
注意事项:
BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。这种编码技巧最常用于会计系统的设计里,因为会计制度经常需要对很长的数字串作准确的计算。
#define uchar unsigned char
uchar 8_bit;
uchar ge,shi,bai;
bai=8_bit/100;
shi=8_bit%100/10;
ge =8_bit%10;
; AX:16位二进制码
; DI:为BCD码准备的单元的首地址
;出口参数
; NONE
BIN2BCD PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH DI ;现场保护
MOV CX,3 ;16位二进制码转换成压缩BCD码最多需要3个字节
RE: SUB DX,DX ;dx清零
DIV WORD PTR 0AH ;AX除于10,商可能越界,所以DX-AX连用,故将0AH转换为字
MOV BL,DL ;将余数保存,因为DL==DX
SUB DX,DX ;dx清零
DIV WORD PTR 0AH ;同上
SHL DL,4 ;抬到高位
OR BL,DL ;压缩BCD码
MOV [DI],BL ;保存压缩的BCD码
INC DI ;准备保存下一个
DEC CX ;计数
JNE RE ;重复
POP DI ;现场恢复
POP DX
POP CX
POP BX
POP AX
RET
BIN2BCD ENDP
用8086的汇编语言?
写一个函数,输入一个十六进制的数,输出相应的十进制数
for(i=n-1;i>=0;i--){ if(a>='0'&&a<='9')num+=(a-'0')*pow(16,n-1-i);else if(a>='A'&&a<='Z')num+=(10+(a-'A'))*pow(16,n-1-i);else if(a>='a'&&a<='z')num+=(10+(a-'a'))*pow(16,n-1-i);} printf("转换十进制为:");printf("%d",nu...
C语言编写程序 ,以字符形式输入一个十六进制数,将其变换成一个十进制...
include<stdio.h> include<stdlib.h> include<string.h> int main(){ char c[100];int i,len;long res=0,g=1;printf("请输入一个十六进制数:"); scanf("%s",c);len=strlen(c);for(i=len-1;i>=0;i--,g=g*16)if(c[i]>='a' && c[i]<='f') res+=(c[i]-87)*g;...
用传统流程图表示求解以下问题的算法:将一个16进制数转化为十进制数...
计算机语言只是一种工具。光学习语言的规则还不够,最重要的是学会针对各种类型的问题,拟定出有效的解决方法和步骤即算法。有了正确而有效的算法,可以利用任何一种计算机高级语言编写程序,使计算机进行工作。因此,设计算法是程序设计的核心。为了表示一个算法,可以用不同的方法。常用的有自然语言,流程图...
...排列顺序,并输出前三个值,我是新手,请编一个出来,感谢感谢..._百度...
\/\/循环用户输入的16个数 for(int i = 1; i <= 16; i++){ System.out.println("请输入第" + i +"个数");arr[i-1] = sc.nextDouble();} \/\/进行排序 java.util.Arrays.sort(arr);\/\/输出排序后的16个数,顺序是从小到大 System.out.println(java.util.Arrays.toString(arr));} ...
用java编写:输入一个16位的长整型数,利用swith语句统计其中一到九每个...
int i;long num, temp;int[] count = new int[]{0,0,0,0,0,0,0,0,0};Scanner scan = new Scanner(System.in);\/\/输入16位的长整型数 while(true){ System.out.print("input a long number : ");num = scan.nextLong();if(num >= 1e15 && num <= 1e16-1){ break;} } ...
试编写一个汇编语言程序,要求从键盘接收一个四位的16进制数,并在终端上...
code segment assume cs:code start: mov bx,0 mov ch,4 mov cl,4 s0: mov ah,1 ;键盘输入4个16进制数 int 21h cmp al,39h ;判断是0~9还是A~H,若是数字减30H,否则还要减07H jbe next sub al,07h next: sub al,30h shl bx,cl add bl,al ;转换后的数据存入B...
编写函数atox()能把连续输入的3个16进制字符转换成一个十进制整数,如输...
include <stdio.h> include <math.h> int atox(char *str){ int n = 0;for (int i=2;i>=0;i--){ if(str[i]>='0' && str[i]<='9')n+=(str[i]-'0')*pow(16,2-i);else if (str[i]>='A' && str[i]<='F')n+=(str[i]-'A'+10)*pow(16,2-i);} return...
8051编写一个统计16位二进制数中1的个数
以下程序就可以了:MOV R2, #0 MOV DPTR, #0B5A3H CALL NUM CALL NUM MOV A, R2 ;A = 0x9 = 00001001b SJMP NUM:MOVX A, @DPTR INC DPTR MOV R3, #8 LP:RLC A JNC NEXT INC R2 NEXT:DJNZ R3, LP RET END ...
编写一个程序,然后分别转换成为二进制数,八进制数和16进制数输出。谢谢...
include <iostream>using namespace std;int n,a[100];int main(){cout<<"请输入一个十进制数:"; cin>>n;int temp=n,num=0;while (temp>0){a[++num]=temp % 2;temp=temp\/2;}cout<<n<<"转化成二进制是:"<<endl;for (int i=num;i>=1;i--)cout<<a[num];cout<<endl; ...
编写一个程序,把片内RAM从30H开始存放的16个数据传送到片外RAM从0000H...
1、首先在采用CCS6.0编译器进行代码编写时,要进行相应的设置,如下图所示。2、其中,外扩接在Zone7上,所以地址编号从0x200000开始。3、在初始化中,InitSysCtrl函数对XINTF时钟;InitXintf函数中配置相关寄存器,并且,将对应IO设置为XINTF外设使用。4、最后将程序下载到控制板,通过“View—>Memory”...
豫浅托恩: 1234567891011121314151617181920212223242526272829303132333435363738 START: MOV SI, 0500H MOV AX, [SI] MOV DX, 0 MOV BX, 10000 DIV BX ADD AL, 30H MOV [SI + 10H], AL MOV AX, DX MOV DX, 0 MOV BX, 1000 DIV ...
山南地区13416257875: 怎么将16位二进制数转换成BCD码的汇编语言程序 - ?
豫浅托恩: MOV R0, TH1 MOV R1, TL1 CALL HEX2BCD ;调用子程序把R0 R1中的数字,转换成BCD码,送到R2 R3 R4;-------下面,把万千百十个位,分别存入R4 R3 R2 R1 R0 MOV A, R4 MOV B, #16 DIV AB ;除以16,目的是分离出高、低四位 MOV...
山南地区13416257875: 汇编中怎么将16进制转化为二进制 - ?
豫浅托恩: 在计算机里面,二进制和16进制,是等效的,不需要转换. 也不可能转换.可以发生变化的,只有显示.
山南地区13416257875: 利用下面这段汇编程序进行十六位2进制的数转换为十进制 - ?
豫浅托恩: 这是一个成型的子程序,会用即可.参考:http://hi.baidu.com/do_sermon/item/4d04af0b6b61e0e7f55ba655
山南地区13416257875: 用汇编语言,试编写一段程序段,把AX中的16位无符号二进制数转换成ASC码并显示在CRT显示器中 - ?
豫浅托恩: MOV BX,AX MOV CH,4 NEXT0: MOV CL,4 ROL,BX,CL MOV DL,BL AND DL,0FH CMP DL,09H JBE NEXT1 ADD DL,07H NEXT1: ADD DL,30H MOV AH,02H INT 21H DEC CH JNZ NEXT0
山南地区13416257875: 用汇编语言将内存中的16位的有符号二进制数转换为十进制ASCII码形式 - ?
豫浅托恩: 1、在许多汇编书上均有例程,可参考一下.如:《80*86 奔腾机汇编语言程序设计》(电子工业出版社)2、可以利用C的sprintf进行各种字符串与数据的转换(将其形成库),然后在汇编下调用.这是一个比较简单,功能也是最强的一个通用...
山南地区13416257875: 如何编写一个汇编程序,要求“从键盘接收一个四位的16进制数,并在终端上显示与它等值的二进制数”? - ?
豫浅托恩: 试编写一段程序,要求对键盘输入的小写字母用大写字母显示出来.1. 编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符.2. 编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续...
山南地区13416257875: 用汇编做一个16进制数转换的程序,并把它显示出来 - ?
豫浅托恩: P SEGMENT ORG 100H ASSUME CS:P,DS:P,ES:P,SS:P MAIN PROC NEAR MOV SI,VAR MOV CX,4 mov bx,table L2 : PUSH CX MOV CL,4 ROL SI,CL MOV AX,SI AND AL,0FH XLAT mov dl, al MOV AH,2 INT 21H POP CX loop cx MOV AH,4...
山南地区13416257875: 汇编小白 键盘输入16位二进制数 转换成等值十进制数显示 - ?
豫浅托恩: 以下程序,可以的:;================================== DATA SEGMENT BUF1 DB 10, 13, 'PLEASE INPUT BIN : ', 13, 10, '$' BUF2 DW 0 DATA ENDS;---------------------------------- CODE SEGMENT ASSUME CS:CODE, DS:DATA, ES:...