- 博客(83)
- 收藏
- 关注
原创 由汇编代码确定switch语句
x位于相对于寄存器%ebp偏移量为8的地方。.L8是分配地址的起始标号,与这个标号对应的地址会作为间接跳转(第5行)的基地址。在编译函数时,GCC为程序的初始部分以及跳转表生成了如下汇编代码。由JA .L2和.LONG .L2,知-1为缺省值。, 所以x的取值为-2、-1、0、1、2、3和4。标号.L6有2和3两个情况标号值。stictch2的跳转表。由1、2、3和4行,有。
2025-06-08 19:09:25
53
原创 计算矩阵A和B的乘积
根据矩阵乘法规则,编程计算矩阵的乘积。函数fix_prod_ele()是基本方法编写,函数fix_prod_opt()是优化方法编写。
2025-06-07 11:32:39
284
原创 求无符号字符型数据乘积的高一半
两个无符号字符型数据x和y的乘积是unsigned int数据。程序通过unsigned_high_prod( )函数调用signed_high_prod( )实现。signed_high_prod( )函数把x和y作为带符号数,计算得到它们乘积的高一半(char)。
2025-05-21 16:45:36
453
原创 无符号长整型数x的循环右移
无符号长整型数x,循环右移位数n的取值范围是:x大于等于0且小于32。比如,x=0x12345678,n=4,则循环右移4位后,x=0x81234567。
2025-05-19 17:22:34
146
原创 由浮点数x的位级表示求其整型值
由浮点数x的位级表示,得到浮点数的十进制表示,在超过32位整型数的表示范围时,返回0X80000000;在32位整型数的表示范围内时,返回强制转化为整型的值。舍入时采用向0舍入。
2025-05-17 11:21:43
232
原创 由浮点数x的位级表示求2x的位级表示及十进制表示
对于浮点数x的位级表示,调用函数float_twice()得到2x的位级表示,调用函数ulint_float()分别得到它们的十进制表示。
2025-05-16 10:17:39
219
原创 求由无穷串构成的二进制数的值
由无穷串构成的二进制数:0.yyy....,y是一个k位的序列。要求由无穷串构成的二进制数的十进制值Y,可由公式计算得到。
2025-05-13 18:05:34
256
原创 A/D-D/A转换器PCF8591
PCF8591具有模拟-数字转换器(ADC)和数字-模拟转换器(DAC)的功能。PCF8591先把电阻电压转换为数字量送给单片机,单片机再把该数字量送给PCF8591,转换为模拟量从引脚AOUT输出。电阻电压送LCD1602显示。
2025-04-13 08:45:00
146
原创 结构体变量的设置
有两个结构体,把其中一个结构体成员的和送给另一个结构体的成员。通过结构体指针引用这两个结构体的成员。把结构体s2的成员t和u的和值21送给结构体s1的成员y。
2025-04-07 10:00:57
139
原创 冒泡法排序
也可以采用条件传送来实现,把A[i]与A[i+1]比较,较小的数送给变量min,较大的数送给变量max,然后,把min送给A[i],把max送给A[i+1],当数据较多时,采用条件传送效率更高。采用冒泡法,先比较最开始的两个元素,按照从小到大的顺序排好,然后增加第3三个元素,再把这三个元素排好顺序,就这样,不断增加元素,最终实现所有的元素按照从小到大的顺序排列。if(dat[i+1]<dat[i]) //条件成立,交换比较数的位置。
2025-03-30 11:10:22
335
原创 利用结构体求矩形面积
矩形的宽和高作为结构体s的成员,而结构体s是结构体rec1的成员,结构体rec1中还有一个指针字段存放宽度变量的地址,这样,就有不同的方法得到矩形的面积。//存放结构体变量rec2地址。//指针sp保存结构体rec1的地址。//存放变量w的地址。
2025-03-29 10:46:25
217
原创 求矩阵某列的和
设计函数sum_column( int A[E1(n)][E2(n)], int j ),E1(n)和E2(n)分别为用宏定义的行数和列数,j为列号。在该函数中,设计指针ptr=&A[0][j],通过*ptr及ptr=ptr+E2(n)访问第j列元素,从而求得第j列元素的和。在主函数中定义该矩阵,指定所求和的列号j,然后调用函数sum_column( ),返回第j列元素的和。
2025-03-28 11:18:43
507
原创 求质点的质心
定义二维结构体数组grid[2][2],存放4个质点的x坐标和y坐标。以步长为1的引用模式求得所有质点x坐标的和,以及y坐标的和。利用右移操作求得质心的x坐标和y坐标。
2025-03-25 10:32:22
421
原创 三维数组求和
三维数组a[4][3][2],总共有个元素。这些元素在存储器中的存放顺序是:a[0][0][0]、a[0][0][1]、a[0][1][0]、a[0][1][1]、 a[3][2][0]、a[3][2][1]。对该数组求和时,按照存储顺序访问就能得到一个很好的步长为1的引用模式和良好的空间局部性,从而提高计算效率。三维数组的优先顺序:行、列、深度。
2025-03-22 10:15:45
344
原创 数组合并排序
两个有序数组A(长度为n)和B(长度为m),要合并为一个更大的有序数组C(长度为m+n)。让i1索引数组A,让i2索引数组B,让i3索引数组C,三个索引号初值均为0。情形1:当i1<n且i2<m时,A[i1]与B[i2]较小者赋予C[i3],发生传送数组的索引加1,再选A[i1]与B[i2]较小者赋予C[i3],直到条件不再满足(i1<n且i2<m不再成立)。情形2:若i1<n,把A[i1]赋予C[i3],直到i1不再小于n。情形3:若i2<m,把B[i2]赋予C[i3],直到i2不再小于m。
2025-03-20 16:57:25
191
原创 一般矩阵的转置
矩阵B,采用优化方法实现,对A矩阵,采用行指针*Arow访问同一行不同列元素,对矩阵B,采用列指针*Bptr访问相同列不同行元素。
2025-03-18 10:09:33
206
原创 矩阵的转置
对于的矩阵,使用两个指针变量,可以方便实现(i,j)处元素与(j,i)处元素交换位置。令指针Arow=&A[i][0],则Arow[j]可实现对第i行j列元素的访问。令指针Bptr=&A[0][i],则*Bptr就可以访问(0,i)处元素,然后,令Bptr+=M,就可访问同列不同行的元素。
2025-03-15 14:34:05
300
原创 加法运算强制类型转换
C51中,给做加法运算的操作数强制类型转换与把加法结果强制类型转换是一样的效果,等同于把字符型变量x和y相加的和赋值于整型变量。
2025-03-14 15:45:20
178
原创 类型转换规则
字符型变量转换为长整型变量,进行符号位扩展;长整型变为整型,截掉高一半,数据大小可能发生变化;无符号长整型变为无符号整型,也是截掉高一半,数据大小可能发生变化。
2025-03-11 10:50:29
249
原创 74LS148实现优先权管理
74LS148引脚GS接单片机引脚INT0,当有中断请求时,读取端口P2,查询优先权最高的中断源(闭合按键)的编号A2A1A0,并把编号在数码管上显示。不断查询,显示器显示的数字是优先权最高的中断源的编号。当P3.2引脚变为高电平,所有的中断请求都服务完毕,显示P,查询结束。
2025-03-09 19:29:02
970
原创 以实例解析汇编语言和高级语言
用汇编语言编程,可以使用目标计算机的所有指令,而高级语言程序没有这样的能力。汇编语言只能运行在指令系统相同的系列计算机上,而高级语言程序可以运行在各种不同的计算机上。对许多应用来说,这种软件的可移植性相当重要。通过实例说明,使用汇编源程序,能看到机器级的执行过程,对理解计算机的运行有帮助。使用C51隐藏了机器实现,使开发者侧重于问题的解决思路,开发效率高,可靠性更好,且易于推广和交流。
2025-03-03 15:55:59
427
原创 IEEE浮点表示解析
当s=0,e=255,即exp是8个1,而frac是23个0时,就表示正无穷;当s=1,e=255,即exp是8个1,而frac是23个0时,就表示负无穷。当该正整数的二进制表示为1后面跟24位,且最右边位为1,其余位均为0时,该数就不能被准确表示。e=255,即exp是8个1,而frac不全为0时,就表示NaN,指不是一个数。当exp=0时,是非规格化表示。,二进制表示为1.frac,1常常被舍掉。符号位s为0,表示这个数是正数,为1,表示这个数是负数。对于非规格化表示,E=1-Bias。
2025-03-03 11:24:22
275
原创 线反转法实现矩形键盘按键识别
由于行、列线为多键共用,各按键彼此将相互发 生影响,必须将行、列线信号配合起来并作适当的处理,才能确定闭合键的位置。线反转法第1步:列线输出为全低电平,则行线中电平由高变低 的所在行为按键所在行。第2步:行线输出为全低电平,则列线中电平由高变低 所在列为按键所在列。综合上述两步,可确定闭合按键所在行和列。
2025-03-01 21:40:30
604
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人