shr逻辑右移的实现

STEVEN5103 2007-02-06 11:58:15
vb里可以这样实现逻辑右移函数,Oracle里怎么写出shr这个函数?
各位大虾帮忙一起实验下.

'2.逻辑右移

Public Function SHR(OPR As Byte, n As Integer) As Byte
Dim BD As Byte
Dim I As Integer
BD = OPR
For i = 1 To n - 1
BD = BD \ 2 '右移
Next i
CF = BD And 1 '判断D0位是否进位
SHR = BD \ 2
End Function

这里先贴个Oracle里的xor函数:
function bitxor(p_dec1 number, p_dec2 number) return varchar2 is
begin
return
ascii_raw(
utl_raw.cast_to_varchar2(
utl_raw.bit_xor(
raw_ascii(p_dec1),
raw_ascii(p_dec2)
)
)
);
end;

谢了!
...全文
223 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
简易计算机系统综合设计设计报告 班级##学号 一、设计目的 连贯运用《数字逻辑》所学到的知识,熟练掌握EDA工具的使用方法,为学习好后续《计算 机原理》课程做铺垫。 二、设计内容 按给定的数据格式和指令系统,使用EDA工具设计一台用硬连线逻辑控制的简易计算 机系统; 要求灵活运用各方面知识,使得所设计的计算机系统具有较佳的性能; 对所做设计的性能指标进行分析,整理出设计报告。 3. 详细设计 1.指令计数器〔zhiling_PC〕 元件: 输入端口:CLK,RESET,EN; 输出端口:PC[3..0]; CLK:时钟信号; RESET:复位信号; EN:计数器控制信号,为1的时候加一; PC[3..0]:地址输出信号; 代码: 波形图: 总共有九条指令,指令计数器从0000到1000; 功能: 实现指令地址的输出; 存储器〔RAM〕 元件: 输入端口:PC[3..0],CLK; 输出端口:zhiling[7..0]; CLK:时钟信号; PC[3..0]:指令地址信号; zhiling[7..0]:指令输出信号; 代码: 波形图: 功能: 根据输入的地址输出相应的指令; 3.指令译码器〔zlymq〕 元件: 输入端口:zhiling[7..0]; 输出端口:R1[1..0],R2[1..0],M[3..0]; zhiling[7..0]:指令信号; R1:目标寄存器地址; R2:源寄存器地址; M[3..0]:指令所代表的操作编号; 代码: 波形图: 功能: 实现指令的操作译码,同时提取出目标寄存器和源寄存器的地址; 4.算术逻辑运算器〔ALU〕 元件: 输入端口:EN_ALU,a[7..0],b[7..0],M[3..0]; 输出端口:c[7..0],z; EN_ALU:运算器的使能端; a[7..0]:目标寄存器R1的值; b[7..0]:源寄存器R2的值; M[3..0]:指令所代表的操作编号; c[7..0]:运算结果; z:运算完成的信号; 代码: 波形图: 功能: 实现算术逻辑运算,输出运算结果; 5.选择器〔cpu_counter〕 元件: 输入端口:CLK,R1[1..0],R2[1..0]; 输出端口:EN_A,EN_B,EN_ALU,R,C,AD[1..0]; CLK:时钟信号; R1[1..0]:目的寄存器地址; R2[1..0]:源寄存器地址; EN_A:暂存器A的控制信号; EN_B:暂存器B的控制信号; EN_ALU:运算器alu的控制信号; C:指令计数器的控制信号; AD[1..0]:寄存器的地址; R:通用寄存器的可读控制信号; 代码: 波形图: 功能: 控制运算器ALU的运行时间,控制暂存器A,B的数据输入,控制通用寄存器的输出, 控制指令计数器的技术,实现时序的统一性; 6.暂存器〔jcq〕 元件: 输入端口:CLK,RESET,K,s[7..0]; 输出端口:Q[7..0]; CLK:时钟信号; RESET:复位信号; K:暂存器输入控制端口; Q[7..0]:数据输出端口; 代码: 波形图: 功能: 实现运算数据的暂时储存; 7.通用寄存器组〔tyjcqz〕 元件: 输入端口:CLK,RESET,R,W,AD[1..0],WR[7..0]; 输出端口:s[7..0]; CLK:时钟信号; RESET:复位信号; R:数据读取控制信号; W:数据写入控制信号; AD[1..0]:寄存器的地址; WR[7..0]:写入的数据; s[7..0]:数据输出端口; 代码: 波形图: 功能: 实现寄存器ABC,保存ABC中的数据,实现运算结果的保存; 4. 系统测试 4.1 测试环境 4.2 测试代码 "指令的汇编符号 "指令的功能 "指令的二进制编码 " "MOV R1,R2 "〔R2〕 R1 "0011 R1 R2 " "MOV M,R2 "〔R2〕 〔C〕 "0011 11 R2 " "MOV R1,M "〔〔C〕〕 R1 "0011 R1 11 " "ADD R1,R2 "〔R1〕+〔R2〕 R1 "1001 R1 R2 " "SUB R1,R2 "〔R1〕-〔R2〕 R1 "0110 R1 R2 " "AND R1,R2 "〔R1〕 〔R2〕 R1 "1110 R1 R2 " "NOT R1 "/〔R1〕 R1 "0101 R1 ## " "SHR R1 "〔R1〕逻辑右移一位 R1 "1010 R1 00 " "SHL R1 "〔R1〕逻辑左移一位 R1 "1010 R1 11 " A:00000111 B:00001000 C:00000011 3. 测试结果 5. 总结 刚开始做CPU的时候什么思路都没有,后来经过小组讨论才找到一点思路,决定才寄 存器做起,后面经过几天的讨论和努

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧