2 lucky tiger

学生身份

我要认证

要一直前进,一直静下心来学习。

等级
TA的排名 1w+

力扣78子集 回溯

1、这几天找完工作没怎么做题手生了和前几天的回溯一样这道题只不过是没有限定子集的长度class Solution {public: vector<vector<int>> subsets(vector<int>& nums) { vector<vector<int>>vec; if(nums.size() == 0)return vec; vector<int

2020-09-24 16:07:57

union与大小端

union是C语言中的一个关键字,数据在内存中的操作是使用补码进行加减操作。int类型占4个字节长度,即32位,char类型占1个字节长度,即8位。80X86一般意味着小端存储和32位操作系统union中的所有数据成员共用一个空间,同一时间只能存储其中的一个数据成员,并且所有的数据成员有相同的起始地址。例如:union U{ double d; int i; char c; float f;}u;它的大小是其中最大长度double类型的大小..

2020-09-23 22:26:42

汇编语言之--------外中断

1、在PC系统中,外中断源一共有两种:1、可屏蔽中断2、不可屏蔽中断(断电)可屏蔽中断是CPU可以不响应的外中断。CPU是否响应可屏蔽中断,要看标志寄存器的IF位的设置。当CPU检测到可屏蔽中断信息时:1、如果IF = 1 则CPU在执行完当前指令后响应中断,引发中断过程;2、如果IF = 0 则不响应可屏蔽中断内中断复习回顾:1、取出中断类型码n2、标志寄存器入栈,IF = 0, TF=0;3、CS IP入栈4、(IP)=(n*4), (CS)=(n*4+2)

2020-09-23 16:43:49

汇编语言之---------端口

1、CPU可以直接读写数据的三个地方 CPU内部寄存器 内存单元 端口对端口的读写不能用mov push pop等内存读写指令对端口的读写指令只有两条in out 分别用于从端口读取数据和往端口写数据CPU访问内存对端口访问(网页是80端口 tcp ip)对端口的访问in out只能使用ax或al来存放从端口读入的数据或要发送到端口中的数据 8位的端口al 16位的端口axCMOS RAM芯片...

2020-09-22 20:31:37

汇编语言--------------内中断

1、硬件中断分外部中断和内部中断外部中断计算机外设发出的中断请求----------------可以屏蔽中断内部中断硬件出错或者运算出错引起的中断-------不可以屏蔽的中断2、软件中断软件中断其实并不是真正的中断,它们只是可被调用执行的一般程序以及DOS系统功能调用(INT21)等都是软件中断...

2020-09-22 11:08:39

汇编语言之----------标志寄存器

1、8086CPU的标志寄存器有16位,其中存储的信息通常被称为程序状态字(PSW)8086CPU的flag寄存器结构:1 3 5 12 13 14 15位在8086CPU中没有使用,不具有任何意义0 2 4 6 7 8 9 10 11都具有特殊的含义2、ZF标志(zero flag)flag的第6位是ZF,零标志位它记录相关指令执行后结果为0, ZF = 1结果不为0,ZF = 0mov ax,1 sub ax,1 ...

2020-09-21 20:53:08

汇编语言之--------------call和ret的使用

call ret指令都是转移指令,他们都修改ip或者同时修改cs ip1、ret指令用栈中的数据修改ip的内容,从而实现近转移CPU执行ret指令时,进行下面两步操作(1)(IP) = ((SS)*16 + (SP))(2)(sp) = (sp) + 22、retf指令用栈中的数据修改CS和IP的内容,从而实现远转移(1) (ip)= ((ss)*16 + (sp))(2) (sp)+2(3) (cs) = ((ss)*16 + (sp))(4) (sp) = (sp).

2020-09-21 17:30:56

汇编语言之---------------bx si di bp

1、这四个寄存器可以单独出现(bx、bp si di)或者只能以四种组合出现(bp si) (bx di) (bp si) (bp di)错误的用法mov ax,[bx+bp]mov ax,[si+di]这两个是不能发生关系的2、只要在[...]中使用寄存器bp,而指令中没有显性的给出段地址,段地址就可以默认在ss中3、绝大部分机器指令都是进行数据处理的指令,处理大致可分为3类读取 写入 运算在机器指令这一层来讲,并不关心数据的值是多少,而关心指令执行...

2020-09-21 15:59:17

汇编语言之---------------更灵活的定位内存地址的方法

之前我们使用[0] [bx]1、and指令 mov al,01100011B 先将01100011B这8位数据放到al寄存器中 and al,00111011B 然后按位与执行后:al = 00100011B2、and指令可以将操作对象的相应为设置为0将al的第6位设置为0: and al,101111111B3、or或运算mov al,01100011Bor al,00111011B执行后: al = 011110...

2020-09-21 11:14:42

汇编语言之------------------------在代码段中使用栈

1、assume cs:codesgcodesg segment dw 0123h,0456h,0123h,0456h,0123h,0456h,0123h,0456h,0123h,0456h//以字为单位 定义数据来取得空间 ?code endsend程序在运行时定义的数据cs:0-cs:15单元中,将着8个数据逆序,就先进栈再出栈就实现了逆序存放2、mov ax,csmov ss,axmov sp,32我们要将cs:16-cs:31的内存空间当作栈来使...

2020-09-19 11:16:38

力扣47 全排列ii 回溯加剪枝

这题难点在于先排序,然后重复的数字112 used[i-1]= fase 代表之前我用过了,就是我俩 1前面的用过了现在这一个我就直接跳过去class Solution {public:vector<bool> used; vector<vector<int>> permuteUnique(vector<int>& nums) { sort(nums.begin(),nums.end()); vect.

2020-09-18 22:16:12

汇编语言之----------------------[bx] loop

1、在debug中我们写过类似的指令:MOV AX,[0]表示将ds:0处的数据送入ax中。指令中,在“[...]”里用一个常量0表示内存单元的偏移地址[bx]对于编译器来说mov ax, [0][0] 表示内存单元,他的偏移地址是0,但是编译器是认为只把0传过去而不是地址里面的数据mov bx,0mov ax,[bx]这样间接的使编译器知道地址2、loop代表循环3、描述性符号()(1)ax中的内容为0010H,我们可以这样来描述:(ax)= 001

2020-09-18 14:28:07

Static全局变量与普通的全局变量有什么区别?static函数与普通函数有什么区别?

Static全局变量与普通的全局变量有什么区别?答:  全局变量(外部变量)的说明之前再冠以static就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个原文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。  由于静态全局变量的作用域限于一个源文件内,只能为该

2020-09-17 19:42:41

汇编语言之----------第一个程序

1、segment段开始ends段结束是一对成对使用的伪指令,功能是定义一个段一个程序是由多个段组成,这些段被用来存放代码、数据或当作段空间使用2、end 是一个汇编指令的结束标记,代表结束对源程序的编译程序写完了一定要在结尾加上end3、assume含义为“假设”它假设某一段寄存器和程序中的某一个用segment ends定义的段相关联通过assume说明这种关联,在需要的情况下,编译程序可以将段寄存器和某一个具体的段相关联...

2020-09-16 22:03:34

汇编语言之-------------------栈

1、push指令mov ax,0123HPUSH AXMOV BX,2266HPUSH BXPOP BXPOP AX每次往栈地址里放16b两个字节的数据2、问题一:CPU如何知道一段内存空间被当作栈使用答案:寄存器CS IP中存放着当前指令的段地址和偏移地址8086CPU中有两个寄存器: 段寄存器SS 存放栈顶的段地址 寄存器SP 存放栈顶的偏移地址任意时刻 SS:SP 指向栈顶元素<AX BX CX DX通用寄...

2020-09-16 21:06:14

寄存器指令MOV ADD SUB

1、不可以直接mov到段寄存器将内存中的东西送入寄存器?MOV BX 1000HMOV DS,BXMOV AL,[0]先mov到通用寄存器,再从通用寄存器到段寄存器 <数据->通用寄存器->段寄存器>到时候他会根据偏移地址和段地址找到内存地址将10000H(1000:0)中的数据读到ALMOV AL,[0]:1、将数据送入寄存器MOV AX,2E2、将一个寄存器的内容送到另一个寄存器MOV AX,BX3、以及现在使用的将一个内存单元的...

2020-09-16 15:50:04

段地址和段寄存器

1、8086外部提供了20位的地址总线,CPU内部只能提供16位地址两个16位地址转换为20位地址加法器合成物理地址的方法:物理地址 = 段地址*16 + 偏移地址(16进制数*16就是向左移动一位)在8-86PC机中,存储单元的地址用两个元素来描述。即段地址和偏移地址段地址随意定义只要找到物理地址就行2、段寄存器段寄存器就是提供段地址的8086CPU有4个段寄存器CS、DS、SS、ES当8086要访问内存时,由这4个段寄存器提供内存单元的段地址CS和IP是.

2020-09-16 10:45:28

寄存器总结之通用寄存器

一个典型CPU是由运算器、控制器、寄存器等器件组成,这些器件靠内部总线相连。区别:内部总线实现CPU内部各个器件之间的联系外部总线实现CPU与主板上其它器件的联系。(地址,数据,控制)8086CPU有14个寄存器,他们的名称为:AX、CX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW(简单理解1+1把1放AX,2放BX,加起来的和放在CX)8086CPU所有的寄存器都是16位的,可以存放两个字节。8086上一代CPU中的寄存器都是8位;为了保.

2020-09-15 16:34:02

汇编语言复习总结(一)

CPU要想进行数据的读写,必须和芯片进行下面三类信息的交互:存储单元的地址(地址信息)器件的选择,读或写的命令(控制信息)读或写的数据(数据信息)地址总线确定内存上的物理地址位置数据总线的宽度决定每次数据传输的大小控制总线CPU对外部器件的控制是同通过控制总线来进行的。在这里控制总线是个总称,控制总线是一些不同控制线的集合。有多少根控制总线,就意味着CPU提供了对外部器件的多少种控制(读写控制)所以控制总线的宽度决定了CPU对外部器件的控制能力...

2020-09-15 15:40:09

进程控制块PCB--------------task_struct

task_struct包含哪些信息:每个进程在内核中都有⼀个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体。task_struct是Linux内核的⼀种数据结构,它会被装载到RAM⾥并且包含着进程的信息。每个进程都把它的信息放在 task_struct 这个数据结构⾥,并且可以在 include/linux/sched.h ⾥找到它。所有运⾏在系统⾥的进程都以 task_struct 链表的形式存在内核⾥。<这里我在想不考虑高端内存的话用

2020-09-15 09:48:18

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到达人
    签到达人
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv1
    阅读者勋章Lv1
    授予在CSDN APP累计阅读博文达到3天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 分享达人
    分享达人
    成功上传6个资源即可获取