首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏xingoo, 一个梦想做发明家的程序员

    汇编语言 手记3

    从读写属性上存储器分为:随机存储器RAM和只读存储器ROM 从功能和连接上分类: 随机存储器RAM 装有BIOS的ROM 接口卡上的RAM 上述的存储器物理上是独立的器件。 但是它们在一下两点上相同:

    1K100发布于 2018-01-17
  • 来自专栏Android点滴分享

    汇编学习(3),ddd以及跳转循环

    wNum dw 12345 dNum dd 1234567890 qNum1 dq 1234567890123456789 qNum2 dq 123456 qNum3 , -1 mov rax, qword [qNum1] mov qword [qNum2], rax mov rax, 123456 movq xmm0, [qNum3] 因此可以得出以下关键结论: 用8,16位数字给64位寄存器赋值,不会清空高位 用32位数字给64会寄存器赋值,会自动清空高位 sasm 接下来安装一个汇编的IDE,sudo apt install nsam

    55830编辑于 2022-12-02
  • 来自专栏全志嵌入式那些事

    全志XR806芯片 汇编代码调试技巧

    3.问题分析 通过log定位到是启动代码出现了问题。 arm汇编中,可利用b .进入死循环。 在汇编中可以利用以下代码打印log: //.c文件中插入 void AsmPrint(void) { printf("var = %#x\n",PrintMagic); } #汇编代码中插入以下代码查看 R0的值 LDR R8,=PrintMagic str R0,[R8] LDR R8,=AsmPrint bx R8 最后发现汇编代码正常,但在运行第一个任务时系统奔溃。

    23610编辑于 2024-02-02
  • 来自专栏TechBlog

    汇编语言程序设计技巧详解(附例题)

    用分支转移指令 JMP @A+DPTR 、循环结构 (1)循环初始化 (2)循环体 ()循环控制 多重循环循环体中套循环结构 4、子程序 (1)子程序入口用标号作为子程序名。 (5)提供足够的调用信息: 1.寄存器传送参数 2.存储器传送参数 3.堆栈传送参数 模块化设计 ---- 汇编语言程序设计技巧 四种基本结构:顺序结构、分支结构、循环结构和子程序。 循环结构 循环程序结构是汇编语言程序中常见的一种程序结构。 ()循环控制 包括对循环计数器的修改和循环结束条件的判断等内容。 【例】利用MCS-51仿真实验板,外部扩展四个双色发光二极管HL1、HL2、HL3和HL4分别模拟北(HL1)、西(HL2)、东(HL3)、南(HL4)四个方向交通灯,连接电路如下图所示: 分析:双色发光二极管有一个阴极

    1.7K31编辑于 2022-07-20
  • 来自专栏叶子的开发者社区

    LC-3 汇编语言 Nim游戏

    @_@汇编T_T 题目描述 Nim是一个简单的双人游戏,可能起源于中国。游戏中使用的计数器类型有很多种类,如石头、火柴、苹果等。 st r3,num_a ld r3,sum_abc add r3,r3,r0 brz win1 st r3,sum_abc br save test1b ld r0,char_b add r0 r0,r0 add r0,r0,#1 add r3,r0,r3 brn error1 st r3,num_b ld r3,sum_abc add r3,r3,r0 brz win1 st r0,#1 add r0,r0,r3 brn error1 ld r3,num_c not r0,r0 add r0,r0,#1 add r3,r0,r3 brn error1 st r3 r0,r0 add r0,r0,#1 add r3,r0,r3 brn error2 st r3,num_b ld r3,sum_abc add r3,r3,r0 brz win2 st

    42520编辑于 2023-07-30
  • 来自专栏叶子的开发者社区

    LC-3 汇编语言 中断实验

    3.操作系统应该设置KBSR的IE(Interrupt Enable)位。

    56010编辑于 2023-07-30
  • 来自专栏机器学习/数据可视化

    pandas技巧3

    本文中总结了最近工作中用到的几个panads操作技巧 ? 去重后重新排序行索引 pandas中去重之后保留的索引仍是原数据的索引,有时候需要按照0,1,2,3,…进行重新排列 df.drop_duplicates("userid").reset_index(drop

    1.1K10发布于 2021-03-01
  • 来自专栏MelonTeam专栏

    XCode LLDB调试小技巧基础篇提高篇汇编

    导语: 记录平时用到的XCode LLDB调试小技巧 工欲善其事必先利其器,介绍一些LLDB调试的命令和小技巧~ 基础篇 1.print命令 p 输出基本类型,例如double,int po 输出对象类型 如果想输出非十进制可以用以下方法 二进制 (lldb) p/t 10 (int) $2 = 0b00000000000000000000000000001010 八进制 (lldb) p/o 10 (int) $3 hit count = 0 5.4: where = UIKit`-[_UIPickerWheelView initWithFrame:], address = x000000010ec60e3a :transitionContext:completion:] + 1709 13 UIKit 0x000000010a8d87f3 汇编篇 1.寄存器 在我们在调试的时候有时候查看寄存器会有很多有用的信息,我们先介绍下函数调用约定 x64模拟器: %rax 作为函数返回值使用。

    5.3K80发布于 2018-01-04
  • 来自专栏sringboot

    汇编语言完成1到100累加-3

    代码 ; 完成1到100累加,并显示在屏幕上 jmp near start message db "1+2+3+...+100=" start: mov ax,0x7c0 mov 运行虚拟机显示如下 资源 汇编代码及二进制文件:https://github.com/duofanCoder/x86-NASM/tree/master/ASM-Learn-3/code 虚拟机固定大小硬盘 vhd文件:https://github.com/duofanCoder/x86-NASM/tree/master/ASM-Learn-3 vhd写入工具:https://github.com/duofanCoder

    1.4K20编辑于 2021-12-06
  • 来自专栏Linux驱动

    汇编指令-bic(位清除)、orr(位或)(3)

    指令示例: orr R0,R0,#0xd3 ;将R0的第[7:0]位与b'1101 0011按位或,并保存在R0中 3.eor异或指令(exclusive or) eor指令的格式为: eor{条件}{ // 读状态寄存器cpsr的数据到r0中 bic r0,r0,#0x1f // 对r0低5位进行清0,清除模式位 orr r0,r0,#0xd3

    6.1K60发布于 2018-01-03
  • 来自专栏测试工程师成长之道

    Postman使用技巧3

    在用postman接口测试过程中,如何判断一个接口是正确的呢,是返回不报错就是正确的? 显然不是. 该怎么做呢, 跟我来吧! 在开始之前还是继续上期视频的第三部介绍: build 区域是postma

    68430发布于 2019-08-26
  • 来自专栏乱码三千

    汇编语言之MIPS汇编

    MIPS汇编中的分段处理 .data #数据段 .text #代码段 传送指令 加载立即数指令 li li(load immediate) :用于将立即数传送给寄存器 li $t0,1 ;十六进制数据使用 move 用于将一个寄存器中的数据传送至另一个寄存器当中 move $t0,$t1 # 将寄存器$t1中的数据传送至$t0 系统服务指令 syscall 在C语言中输出文本可以使用printf函数,但是汇编中没有 ,如果我们要依次打印1,2,3三个整数,那么汇编如下: print1: li $v0,1 li $a0,1 syscall jr $ra print2: li $v0,1 li $a0,2 , 如果使用高级语言进行封装的话,我们一般一个函数就搞定了: void print(int a){ print(a); } 有没有办法使得汇编能像高级语言一样简洁呢? 2)*4=0x00000000+0x00000014=0x00000014 使用mips汇编实现二维数组定义 #需求:实现int a[3][3] = {{1, 2, 3}, {5, 6, 7}, { 10

    10.6K31发布于 2021-08-24
  • 来自专栏Android点滴分享

    汇编学习(1),汇编之helloworld

    本篇介绍 本篇作为汇编系列的开篇,就先研究下汇编如何写helloworld。 信息,-F dwarf用来指定debug信息格式是dwarf,-l用来生成机器码和汇编的对应文件。 汇编程序一般由data,bss,text 3个段构成, 前面加section就是定义这是某个段。 00000000 68656C6C6F2C20776F- msg db "hello, world",0 3 00000009 726C6400 这样就完成了汇编helloworld的学习了。

    1.2K40编辑于 2022-11-28
  • 来自专栏c++与qt学习

    汇编语言--高级汇编技术

    汇编语言--高级汇编技术 子程序的封装 程序的多文件组织 汇编指令汇 数据传送指令 算术指令 逻辑指令 串处理指令 控制转移指令 处理机控制与杂项操作指令 汇编伪操作汇 处理机选择伪操作 段定义伪操作 .exe的诞生 程序运行步骤及生成的文件 汇编过程 宏汇编 C语言中的预处理命令 汇编中的宏---由C中的宏定义说起 举例 语法和术语 子程序VS宏定义 宏中的局部标号 变元是操作码的一部分 宏库 条件汇编 的指令系统 80x86新增指令 条件设置指令 Intel系列微处理器的3种工作模式 ---- 子程序的封装 这是我们之前调用子程序的写法 下面给出的是c语言中程序的写法,可以看到max函数其实就是一段子程序 从20地址处开始分配 VAR2 DW 5678H //$为上面一条指令的地址 ORG $+8 //在$地址的基础上,加8,然后再对应的地址分配下面这个变量内存空间 VAR3 表示extend ---- 80x86寻址方式 ---- 80x86的指令系统 ---- 80x86新增指令 ---- 条件设置指令 设置的是标志寄存器的值 ---- Intel系列微处理器的3种工作模式

    2.2K31编辑于 2022-07-12
  • 来自专栏汇编语言

    汇编语言】直接定址表(一)—— 「从单元标号到跨段数据:解锁汇编语言的隐藏技巧

    前言 汇编语言是很多相关课程(如数据结构、操作系统、微机原理)的重要基础。 但仅仅从课程的角度出发就太片面了,其实学习汇编语言可以深入理解计算机底层工作原理,提升代码效率,尤其在嵌入式系统和性能优化方面有重要作用。 本专栏的汇编语言学习章节主要是依据王爽老师的《汇编语言》来写的,和书中一样为了使学习的过程容易展开,我们采用以8086CPU为中央处理器的PC机来进行学习。 对于程序中的“a db 1,2,3,4,5,6,7,8”: 指令:mov al,a[si] —— 相当于:mov al,cs:0[si] 指令:mov al,a[3] —— 相当于:mov al ,cs:0[3] 指令:mov al,a[bx+si+3] —— 相当于:mov al,cs:0[bx+si+3] 可见,使用这种包含单元长度的标号,可以使我们以简洁的形式访问内存中的数据。

    43010编辑于 2025-01-20
  • 来自专栏Republic博客

    汇编语言_汇编语言程序

    int 21h codesg ends end 开头和结尾的两句代表伪指令 只有编译器可以读懂 汇编指令可以被翻译为机器码最终被cpu执行 汇编程序 就是包含汇编指令和伪指令的文本 mov ax,4c00h int 21h 跟C语言程序的return 0一样 返回控制权 一个汇编程序是由多个段组成的 这些段被用作各种空间来使用 一个有意义的汇编程序至少需要一个段 且每个段都需要段名 段名 segment- -段的开始 段名 ends--段的结束 assume假设 含义是假设某一段寄存器和程序中我们定义的段名关联起来 可以理解为和变量的引用一个意思 利用汇编程序计算2^3 assume cs:code end assume cs:code code segment mov ax,0fffh mov ds,ax mov bx,6 mov al,[bx] mov ah,0 mov dx,0 mov cx,3 s:add dx,ax loop s mov ax,4c00h int 21h code ends end 计算ffff:0000字节单元中的数乘以3,结果存储在dx中 段前缀的使用 我们在debug会遇到写入时候是

    95520编辑于 2023-11-14
  • 来自专栏逆向技术

    汇编知识扫盲之常见汇编指令

                   汇编知识扫盲之常见汇编指令 一、数据传输指令     它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.   1. 通用数据传送指令.         I/O端口输出. ( 语法: OUT {端口号│DX},累加器 )      输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时,      其范围是 0-65535. 3. JS   符号位为 "1" 时转移. 3>循环控制指令(短转移)     LOOP      CX不为零时循环.     LOOPE/LOOPZ  CX不为零且标志Z=1时循环.     

    2K20发布于 2019-05-25
  • 来自专栏HelloCode开发者学习平台

    汇编(三)

    对于arm64系的CPU来说, 如果寄存器以x开头则表明的是一个64位的寄存器,如果以w开头则表明是一个32位的寄存器,在系统中没有提供16位和8位的寄存器供访问和使用。其中32位的寄存器是64位寄存器的低32位部分并不是独立存在的。

    84010编辑于 2023-03-23
  • 来自专栏个人路线

    flutter 开发小技巧3

    如果利用stack position 来实现定位的话,有时候不居中的情况,可以使用container包裹,

    46210发布于 2021-08-02
  • 来自专栏Pythonista

    Python3编程技巧

    : data Out[3]: [-3, -4, 3, 4, 7, -2, -4, 1, 7, -9] #过滤列表中的负数 In [9]: list(filter(lambda x:x>=0,data) ==0} Out[35]: {-9, -3, 3} #为元祖中的每个元素命名,提高程序可读性 #元祖存储空间小,访问速度快 #定义常量 NAME = 0 AGE=1 SEX=2 EMAIL=3 #拆包用法 Out[58]: [(10, 4), (20, 3), (8, 3)] #统计英文作文词频 import re txt=open('emmmm.txt').read() #分割后赋给Counter c3 'f': 3, 'g': 3} In [10]: s1={x:randint(1,4)for x in sample('abcdefg',randint(3,6))} In [11]: s1 Out [11]: {'b': 2, 'd': 3, 'g': 3} In [12]: s1 Out[12]: {'b': 2, 'd': 3, 'g': 3} In [13]: s2={x:randint

    59120发布于 2018-08-31
领券