- 博客(18)
- 收藏
- 关注
原创 汇编Day3
先解决一个常量问题。比较如下汇编指令:mov al,[0] 含义:(al)=0,将常量0送入al中(与mov al,0)含义相同mov al,ds:[0] 含义:(al)=((ds)*16+0) 将内存单元中的数据送入al中mov al,[bx] 含义:(al)=((ds)*16+(bx)) 将内存单元中的数据送入al中mov al,ds:[bx] 含义:同上loop和[bx]的联合应用考虑这样一个问题,计算ffff:0-ffff:b单元的数据的和,结果存储在dx中。首先分析,运
2022-01-09 19:49:59 295
原创 汇编Day2
第4章 第1个程序一个源程序从写出到执行的过程:第一步:编写汇编源程序第二步:对源程序进行编译连接。这一步工作的结果是产生了一个可在操作系统中运行的可执行文件。第三步:执行可执行文件中的程序举例一段简单的汇编语言程序:assume cs:codesgcodesg segmentstart: mov ax,0123Hmov bx,0456Hadd ax,bxadd ax,axmov ax,4c00Hint 21Hcodesg endsend在汇编
2022-01-07 20:56:15 215
原创 汇编Day1
第3章 寄存器(内存访问)从访问内存的角度学习几个寄存器。首先了解内存中字的存储。CPU用16位寄存器来存储一个字。高8位存放高位字节,低8位存放低位字节。 同时提出字单元的概念,即存放一个字形数据(16位)的内存单元,由两个地址连续的内存单元组成。将起始地址为N的字单元简称为N地址字单元。对于8086,可以根据需要将一组内存单元定义为一个段。例如用123B0H-123BAH这段内存空间来存放数据,我们就可以认为这段内存是一个数据段,它的段地址为123BH,长度为10字节。8086CPU中中有一
2022-01-06 20:09:20 458
原创 汇编Day0
汇编语言是Reverse中的必备知识,作为一名Reverse小白,从汇编开始。参考王爽老师的 汇编语言。本博客作为对教材中的重难点知识进行总结。第1章 基础知识首先解释一下什么是 汇编语言,首先是一种编程语言,只不过相对于python,C++等高级编程语言汇编语言更亲和于底层架构。即是直接在硬件之上工作的编程语言,首先要了解系统的架构,才能有效的应用汇编语言进行编程。汇编语言的主体是汇编指令,于机器指令的差别在于表示方法上。例如汇编指令 mov ax,bx 通过编译器转换为机器码1000
2022-01-05 21:09:06 75
原创 顺序栈与链栈
从逻辑关系上来看,栈属于线性结构,与线性表的不同之处在于一般线性表的插入,删除运算不受限制,而栈插入,删除运算均受某种特殊限制,可称为受限的线性表。 栈的特点: 后进先出顺序栈: 栈空的条件: s->top == -1; 栈满的条件:s->top == MaxSize-1 (其中MaxSize为data数组的最大下标) 元素e的进栈操作: 先将栈顶指针top加1,然后将元素e放在栈顶指针处 出栈操作类比进栈基本操作及实现:...
2021-10-27 23:31:56 429 2
原创 n!的末尾有多少个0
n<=10^9n!可以分解成下列形式n!= 2^t1 * 5^t2 *....不难得知 t2<t1末尾0的个数就是t2的值若使用while(n!%5==0) n/=5 cnt++;n稍大时,复杂度极高,必超时可以采用利用数学方法找1-n中 5的不同次方的背熟的个数来解决此问题例如n=126时5的1次方的倍数:5 10 15 20 25 30 ... 125 (n/5)5的2次方的倍数:25 50 75 100 125 ...
2021-08-02 17:41:06 100
原创 整数的唯一分解定理
对于正整数n,仅存在一种方式将其分解成n=p1^t1 * p2^t2 * ... * pk^tk则n有(t1+1)*(t2+1)*...*(tk+1)个因子
2021-08-02 17:29:19 527
原创 向下取整的经典问题
输入n输出从k=1到k=n 每一项n/k向下取整的和cin>>n;long long ans=0;for (int l=1,r=1;l<=n;l=r+1){ r=n/(n/l); ans+=n/l * (r-l+1);}cout<<ans<<endl;
2021-08-02 13:54:05 232
原创 欧几里得算法
C++中通过cout<<__gcd(x,y)<<endl 可以直接输出x和y的最大公约数而欧几里得算法就是求gcd(x,y)gcd(x,y) =d -> d | x,d | y ->d | (x-y),d | xgcd(x,y)=gcd(x-y,x)=gcd(x-2*y,x)=gcd(x-k*y,x)=gcd(x%y,x)gcd(x,0)=x则利用递归int gcd(int x,int y){ if(!y) return x; .
2021-08-01 12:27:44 75
原创 快速幂a^b%m
题目要求求a的b次方modm的值b<=1e18如果使用for循环,复杂度过高,将会超时快速幂采用将b二进制分解。预处理出a的偶数平方b=5时二进制表示为101则a的5次方 =a的1次方 *a的4次方时间复杂度为O(logb)int quick_pow(int a,int b){ int ret=1; while(b){ if(b&1) ret=ret*a% m;//b&1来判断b是否为奇数 ...
2021-08-01 11:47:16 174
原创 Python 星号三角形(format嵌套)
星号三角形读入一个整数N,N是奇数,输出由星号字符组成的等边三角形,要求:第1行1个星号,第2行3个星号,第3行5个星号,依次类推,最后一行共N的星号。
2021-08-01 11:35:26 5631
转载 函数模板实例
#include<iostream>using namespace std;template<class T>void mySwap(T& a, T& b) { T temp = a; a = b; b = temp;}template<class T>void mySort(T arr[], int len){ for (int i = 0; i < len; i++) { int max = i; for ...
2021-05-13 23:48:23 145 1
原创 重载运算符=
#include<iostream>using namespace std;class Person {public: Person(int age) { m_Age = new int(age); } Person& operator=(Person& p) { //编译器提供的是浅拷贝 //m_Age=p.m_Age //应该先判断是否有属性在堆区 if (m_Age != NULL) { delete m_Age; m_Age .
2021-04-28 22:56:59 109 1
原创 重载前置与后置--运算符
#include <iostream>using namespace std;class MyInteger { friend ostream& operator<<(ostream& cout, MyInteger myint);public: MyInteger() { m_Num = 0; } //重载前置--运算符,返回引用是为了对一个数据操作 MyInteger& operator--() { m_Num--; retu.
2021-04-28 22:53:24 474 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人