虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

前级<b>放大</b>

  • 该程序模拟UNIX中save与resume函数,并介绍在VC中如何使用汇编进行机器级的操作. 主函数很简单首先引入两个外部函数,extern "C"表示按传统C命名习惯.函数save将程序指针保存在

    该程序模拟UNIX中save与resume函数,并介绍在VC中如何使用汇编进行机器级的操作. 主函数很简单首先引入两个外部函数,extern "C"表示按传统C命名习惯.函数save将程序指针保存在(*s)中并返回0,为什么有 if(save(&sp)){...} if后的语句看起来永远都不会被执行,但是运行结果表明它被执行了.这个问题同UNIX中处理机调度函数(switch)的那个if语句(第一句)一样. 程序执行完save(&sp)后得到因为条件为假而执行else语句,却在判断之前将程序指针保存在sp中了. else语句中的resume(&sp),该函数很狡猾将堆栈中的返回地址改变了,改到了sp所指出,即将程序指针改到了执行条件判断前.resume返回1,条件满足,执行if语句. save函数堆栈: eip ebp+8 s ebp+4 ebp ebp+0 resume函数堆栈与save的相同. 新建一个win32的工程,将unixc.cpp和unix.obj加入过程即可. unix.obj是用masm6.11生成的:ml /c /coff unix.asm,生成coff格式的obj而不是omf格式.

    标签: save resume extern 函数

    上传时间: 2015-09-10

    上传用户:变形金刚

  • 用verilog设计密勒解码器 一、题目: 设计一个密勒解码器电路 二、输入信号: 1. DIN:输入数据 2. CLK:频率为2MHz的方波

    用verilog设计密勒解码器 一、题目: 设计一个密勒解码器电路 二、输入信号: 1. DIN:输入数据 2. CLK:频率为2MHz的方波,占空比为50% 3. RESET:复位信号,低有效 三、输入信号说明: 输入数据为串行改进密勒码,每个码元持续时间为8μs,即16个CLK时钟;数据流是由A、B、C三种信号组成; A:前8个时钟保持“1”,接着5个时钟变为“0”,最后3个时钟为“1”。 B:在整个码元持续时间内都没有出现“0”,即连续16个时钟保持“1”。 C:前5个时钟保持“0”,后面11个时钟保持“1”。 改进密勒码编码规则如下: 如果码元为逻辑“1”,用A信号表示。 如果码元为逻辑“0”,用B信号表示,但以下两种特例除外:如果出现两个以上连“0”,则从第二个“0”起用C信号表示;如果在“通信起始位”之后第一位就是“0”,则用C信号表示,以下类推; “通信起始位”,用C信号表示; “通信结束位”,用“0”及紧随其后的B信号表示。 “无数据”,用连续的B信号表示。

    标签: verilog 2MHz DIN CLK

    上传时间: 2013-12-02

    上传用户:wang0123456789

  • 本书是久负盛名的C++经典教程

    本书是久负盛名的C++经典教程,其内容是C++大师Stanley B. Lippman丰富的实践经验和C++标准委员会原负责人Josée Lajoie对C++标准深入理解的完美结合,已经帮助全球无数程序员学会了C++。本版对前一版进行了彻底的修订,内容经过了重新组织,更加入了C++先驱Barbara E.Moo在C++教学方面的真知灼见。既显著改善了可读性,又充分体现了C++语言的最新进展和当前的业界最佳实践。书中不但新增大量教学辅助内容,用于强调重要的知识点,提醒常见的错误,推荐优秀的编程实践,给出使用提示,还包含大量来自实战的示例和习题。     对C++基本概念和技术全面而且权威的阐述,对现代C++编程风格的强调,使本书成为C++初学者的最佳指南;对于中高级程序员,本书也是不可或缺的参考书。

    标签: 教程

    上传时间: 2014-01-26

    上传用户:zhangjinzj

  • TLV1544与TMS320VC5402通过串行口连接

    TLV1544与TMS320VC5402通过串行口连接,此时,A/D转换芯片作为从设备,DSP提供帧同步和输入/输出时钟信号。TLV1544与DSP之间数据交换的时序图如图3所示。 开始时, 为高电平(芯片处于非激活状态),DATA IN和I/OCLK无效,DATAOUT处于高阻状态。当串行接口使CS变低(激活),芯片开始工作,I/OCLK和DATAIN能使DATA OUT不再处于高阻状态。DSP通过I/OCLK引脚提供输入/输出时钟8序列,当由DSP提供的帧同步脉冲到来后,芯片从DATA IN接收4 b通道选择地址,同时从DATAOUT送出的前一次转换的结果,由DSP串行接收。I/OCLK接收DSP送出的输入序列长度为10~16个时钟周期。前4个有效时钟周期,将从DATAIN输入的4 b输入数据装载到输入数据寄存器,选择所需的模拟通道。接下来的6个时钟周期提供模拟输入采样的控制时间。模拟输入的采样在前10个I/O时钟序列后停止。第10个时钟沿(确切的I/O时钟边缘,即上升沿或下降沿,取决于操作的模式选择)将EOC变低,转换开始。

    标签: 1544 5402 TLV 320

    上传时间: 2014-12-05

    上传用户:yepeng139

  • 词法分析器制作与应用 设计思想 (1)程序主体结构部分: 说明部分 %% 规则部分 %% 辅助程序部分 (2)主体结构的说明 在这里说明部分告诉我们使用的LETTER,DIGIT,

    词法分析器制作与应用 设计思想 (1)程序主体结构部分: 说明部分 %% 规则部分 %% 辅助程序部分 (2)主体结构的说明 在这里说明部分告诉我们使用的LETTER,DIGIT, IDENT(标识符,通常定义为字母开头的字母数字串)和STR(字符串常量,通常定义为双引号括起来的一串字符)是什么意思.这部分也可以包含一些初始化代码.例如用#include来使用标准的头文件和前向说明(forward ,references).这些代码应该再标记"%{"和"%}"之间 规则部分> 可以包括任何你想用来分析的代码 我们这里包括了忽略所有注释中字符的功能,传送ID名称和字符串常量内容到主调函数和main函数的功能. (3)实现原理 程序中先判断这个句语句中每个单元为关键字、常数、运算符、界符,对与不同的单词符号给出不同编码形式的编码,用以区分之。 PL/0语言的EBNF表示 <常量定义>::=<标识符>=<无符号整数> <标识符>::=<字母>={<字母>|<数字>} <加法运算符>::=+|- <乘法运算符>::=*|/ <关系运算符>::==|#|<|<=|>|>= <字母>::=a|b|…|X|Y|Z <数字>::=0|1|2|…|8|9

    标签: LETTER DIGIT 程序

    上传时间: 2015-11-04

    上传用户:zhengzg

  • 三相步进电机的三相六拍工作方式

    三相步进电机的三相六拍工作方式,正转的绕组通电顺序:A、AB、B、BC、C、CA、A,反转的通电顺序:A、AC、C、CB、B、BA、B、A。 由于步进电机转子有一定的惯性以及所带负载的惯性,故步进电机的工作过程中不能及时的启动和停止,在启动时应慢慢的加速到预定速度,在停止前应逐渐减速到停止,否则,将产生失步现象。 步进电机的控制问题可总结为两点: 1、产生工作方式需要的时序脉冲; 2、控制步进电机的速度,使它始终遵循加速、匀速、减速的规律工作。

    标签: 三相 步进电机 工作方式

    上传时间: 2015-12-01

    上传用户:685

  • 函数名称:CRC-16 Process 函数原型:INT16U make_crc16(INT8U *msgaddr,INT8U datalen) 函数功能:进行CRC校验和产生CRC代码.这个函数

    函数名称:CRC-16 Process 函数原型:INT16U make_crc16(INT8U *msgaddr,INT8U datalen) 函数功能:进行CRC校验和产生CRC代码.这个函数只影响全局变量crc16. 校验字放在字符串最后,低8位在前高8位在后. msgaddr : 进行CRC16校验的据块的首地址 datalen : 进行CRC16校验的据块的个数 CRC-ITU的计算算法如下: a.寄存器组初始化为全"1"(0xFFFF)。 b.寄存器组向右移动一个字节。 c.刚移出的那个字节与数据字节进行异或运算,得出一个指向值表的索引。 d.索引所指的表值与寄存器组做异或运算。 f.数据指针加1,如果数据没有全部处理完,则重复步骤b。 g.寄存器组取反,得到CRC,附加在数据之后(这一步可省略)。

    标签: CRC INT 16 make_crc

    上传时间: 2015-12-21

    上传用户:llandlu

  • ADT600-1的基地址0x300,中断为7

    ADT600-1的基地址0x300,中断为7, 3个定时器采用级连,CLK0的时钟源是模块上的8M震荡器,中断源为71054定时器的输出OUT2。采集电压范围为+/-5V,请按《ADT200/ADT600技术手册 版本B》上的说明对SW1,W5,W6,W9跳线。若你想修改中断号和基地址,请修改config.h相应的常量ADT_IRQ, ADT_BASE定义,然后重新编译安装,即运行make all 注意:不要在其他文件中修改。

    标签: ADT 600 300 基地址

    上传时间: 2016-02-12

    上传用户:evil

  • ADT600-1的基地址0x300,中断为7

    ADT600-1的基地址0x300,中断为7, 3个定时器采用级连,CLK0的时钟源是模块上的8M震荡器,中断源为71054定时器的输出OUT2。采集电压范围为+/-5V,请按《ADT200/ADT600技术手册 版本B》上的说明对SW1,W5,W6,W9跳线。若你想修改中断号和基地址,请修改config.h相应的常量ADT_IRQ, ADT_BASE定义,然后重新编译安装,即运行make all 注意:不要在其他文件中修改。

    标签: ADT 600 300 基地址

    上传时间: 2013-12-10

    上传用户:tonyshao

  • ADT600-1的基地址0x300,中断为7

    ADT600-1的基地址0x300,中断为7, 3个定时器采用级连,CLK0的时钟源是模块上的8M震荡器,中断源为71054定时器的输出OUT2。采集电压范围为+/-5V,请按《ADT200/ADT600技术手册 版本B》上的说明对SW1,W5,W6,W9跳线。若你想修改中断号和基地址,请修改config.h相应的常量ADT_IRQ, ADT_BASE定义,然后重新编译安装,即运行make all 注意:不要在其他文件中修改。

    标签: ADT 600 300 基地址

    上传时间: 2013-12-25

    上传用户:wl9454