首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Hk_Mayfly的学习记录

    汇编语言》课程设计2

    1 assume cs:code,ss:stack 2 stack segment 3 db 128 dup (0) 4 stack ends 5 code segment db '2) start system',0 29 func3 db '3) clock',0 30 func4 db '4) set clock',0 31 boot+7e00h 33 dw offset func1-offset boot+7e00h 34 dw offset func2- zhidao.baidu.com/question/564008138.html int 16的1号程序:https://zhidao.baidu.com/question/511189643.html 总结   汇编的难度并不大 ,我认为在有编程的基础上,学习汇编要做到细致,细致的理解计算机编程的编译过程,对于我理解其他编程语言也有很大的帮助。

    1K20发布于 2019-07-30
  • 来自专栏Hk_Mayfly的学习记录

    汇编语言》课程设计2

    jmp boot_begin func0 db 'Hk_Mayfly----XIUXIUXIU~',0 func1 db '1) reset pc',0 func2 db '2) start system',0 func3 db '3) clock',0 func4 db '4) set clock',0 ;相减得到的是标号的相对位置 clock1 db 'F1----change the color ESC----return menu',0 clock2 db 'Please input zhidao.baidu.com/question/564008138.html int 16的1号程序:https://zhidao.baidu.com/question/511189643.html 总结   汇编的难度并不大 ,我认为在有编程的基础上,学习汇编要做到细致,细致的理解计算机编程的编译过程,对于我理解其他编程语言也有很大的帮助。

    1.2K20发布于 2019-07-30
  • 来自专栏IC知识库平台

    RISC-V 汇编语言程序设计2汇编程序asm_run_led

    使用RISC-V 汇编语言,编写一个led 跑马灯的实验 程序分析: LI x8, 0xf0000000; # 设置gpio address; LI是伪指令,可被编译器翻译成LUI risc-v汇编指令集内无专门用来清零的指令。 LI x7, 0x00400000; # x7 设置delay counter 将值0x0040_0000存储到x7寄存器中。 0x80对应的2进制数是1000_0000。但是目前不能把x10内的值直接输出到gpio的地址上。 因为led是共阳设计,一端已经是3.3V高电平,led7对应的GPIO接口如果是1,led7不会被点亮。反而其他led灯会被点亮,因为led6-0此时为低电平。所以需要把x10的值整体取反。

    1.9K30发布于 2021-08-03
  • 来自专栏xingoo, 一个梦想做发明家的程序员

    汇编语言 手记2

    汇编由以下3类组成:   1 汇编指令(机器码的助记符)   2 伪指令 (由编译器执行)   3 其他符号 (由编译器识别) 汇编语言的核心是汇编指令,它决定了汇编语言的特性 CPU是计算机的核心部件 一个CPU有N根地址总线,则可以说这个CPU的地址总线的宽度为N 这样的CPU最多可以寻找2的N次方个内存单元。 CPU与内存或其他器件之间的数据传送是通过数据总线来进行的。 汇编指令是机器指令的助记符,同机器指令一一对应 每一种CPU都有自己的汇编指令集 CPU可以直接使用的信息在存储器中存放。 在存储器中指令和数据没有任何区别。

    1K80发布于 2018-01-17
  • 来自专栏我在本科期间写的文章

    4 汇编语言程序设计

    4 汇编语言程序设计 表达式中的运算符和操作符在 x86 汇编语言中的用法。 表达式 表达式是由常数、变量、操作符和运算符组合而成的计算公式。

    43210编辑于 2024-09-13
  • 来自专栏电子技术研习社

    arm(2)| 汇编指令和伪指令

    arm汇编有两种风格,ARM官方的ARM汇编风格:指令一般用大写、Windows中IDE开发环境(如ADS、MDK等)常用。如:LDR R0, [R1]。 GNU风格的ARM汇编:指令一般用小写字母、linux中常用。如:ldr r0, [r1]。 二、arm汇编特点 ARM汇编特点1:LDR/STR架构。 ARM汇编特点2:8种寻址方式。 , {r2-r7,r12} 堆栈寻址 stmfd sp!, {r2-r7,lr} 相对寻址 beqflag ARM汇编特点3:指令后缀。 , {R0, R1, R2} 意思为:把sp指向的3个连续地址段(应该是3*4=12字节(因为为r0,r1,r2都是32位))中的数据拷贝到r0,r1,r2这3个寄存器中去。

    3.4K30发布于 2020-07-10
  • 来自专栏c++与qt学习

    汇编语言设计程序篇-03

    汇编语言设计程序篇-03 用汇编语言写的源程 用汇编语言编写程序的工作过程 程序中的三种伪指令 源程序经编译连接后变为机器码 汇编程序的结构 如何写出一个程序来? 段前缀的使用 在代码段中使用数据 应用案例 在代码段中使用栈 以数据逆序存放为例 数据逆序存放程序 在Debug中的执行结果 将数据、代码、栈放入不同 段 在Debug中执行 ---- 本系列文章参考汇编语言第四版和汇编语言程序设计 贺利坚主讲整理而成 ---- 用汇编语言写的源程序 用汇编语言编写程序的工作过程 ---- 程序中的三种伪指令 CS:IP寄存器是定位代码段位置的 ---- 源程序经编译连接后变为机器码 - --- 汇编程序的结构 在Debug中直接写入指令编写 的汇编程序 适用于功能简单、短小精悍的程序 只需要包含汇编指令即可 单独编写成源文件后再编译为可执行文件的程序 适用于编写大程序 需要包括汇编指令 —求2的三次方 assume cs:codesg codesg segment mov ax,0123H mov bx,0456H add ax,bx add ax,ax

    95210编辑于 2022-06-19
  • 来自专栏IC知识库平台

    RISCV 汇编语言程序设计 (1) 跑马灯设计

    本文主要介绍汇编语言程序设计中跑马灯程序的设计要求,GPIO的概念和相关硬件知识,为之后分析汇编程序做准备。 1. 跑马灯的设计: 使用汇编语言实现跑马灯。 程序设计要求: 假设系统时钟50Mhz,状态机版本RISC-V CPU约每3个时钟周期执行一条指令。 设计要求:系统中有8个LED(汇编语言代码中使用寄存器x10),在risc-v cpu 的硬件连接中, 我们将 LED[7:0] 连接到 risc-v cpu GPIO外设的A组外设寄存器[7:0], 2. 知识点回顾: RISC-V 通用寄存器部分:CPU一共有32个通用寄存器,每个通用寄存器的宽为32位。 因为LED在开发板上采用共阳极方式设计,所以FPGA管脚为低电平时LED点亮。 FPGA GPIO的概念与结构: 图2.GPIO电路模型 上图为一个FPGA GPIO接口的电路模型。中间是一个tri-state三态门模型。

    1.6K30发布于 2021-08-02
  • 来自专栏IC知识库平台

    RISC-V 汇编语言程序设计(4)汇编语言格式及ABI

    1.汇编语言格式简介 以asm_run_seg.S为例: .equ BYTE_DELAY, 0x00100000 .equ GPIO_ADDR, 0xf0000000 .globl _start _ start: LI t2, BYTE_DELAY; # set counter ADDI t3, x0, 0; # t3 = 0 LI t0, GPIO_ADDR LOOP: ADDI t3, t3, 1; # t3 = t3 + 1 BNE t3, t2, LOOP; # if(x6 ! 也有部分汇编指令只接一个寄存器和立即数,格式为指令 + 空格 + 寄存器 + “,”+ 立即数,比如 LI a3,0x08; 汇编指令以分号”;”结束,常量定义以回车换行结束,没有分号”;”。 比如# set gpio base_address 2.ABI ABI(Application Binary Interface),应用程序到二进制的接口,一般是用来在应用程序与操作系统,应用程序与调用库

    1.8K20发布于 2021-08-03
  • 来自专栏电子工程师成长日记

    设计分享|基于单片机的计数器设计汇编

    具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口 另外 STC89X51 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。 设计内容 01 仿真图 本设计利用protues8.7软件实现仿真设计,具体如图。 02 程序 本设计汇编语言编写,主代码具体如下: ORG 0000H LJMP MAIN ORG 0003H LJMP JIAYI ORG 0013H LJMP JIANYI ORG ANL A,#0FH MOVC A,@A+DPTR MOV P0,A MOV A,COUNT ANL A,#0FH MOVC A,@A+DPTR MOV P2,

    1.2K10编辑于 2022-07-27
  • 来自专栏TechBlog

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

    目录 1、顺序结构 2、分支结构 (1)先建立可供条件转移指令测试的条件。 (2)选用合适的条件转移指令。 (3)在转移的目的地址处设定标号。 (5)提供足够的调用信息: 1.寄存器传送参数 2.存储器传送参数 3.堆栈传送参数 模块化设计 ---- 汇编语言程序设计技巧 四种基本结构:顺序结构、分支结构、循环结构和子程序。 SUB6 3、循环结构 循环程序结构是汇编语言程序中常见的一种程序结构。 子程序设计 (1)子程序入口用标号作为子程序名。 (2)调用子程序之前设置好堆栈。 (3)用返回指令RET结束子程序,并保证堆栈栈顶为调用程序的返回地址。 (4)子程序嵌套须考虑堆栈容量。              END 模块化设计 模块化设计是指把一个具体的功能分解成多个小的模块,各个模块之间相互独立,而又可以相互传递参数。

    1.9K31编辑于 2022-07-20
  • 来自专栏电子工程师成长日记

    设计分享|单片机LED点阵时钟(汇编

    另外 STC89X51 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。 :比较不同单片机智能手环系统的具体原理,以及同一类传感器性能的区别,分析单片机智能手环系统的研究现状与发展前景; 软硬件设计法:通过软硬件设计实现具体硬件实物,最后测试各项功能是否满足要求。 设计内容 01 仿真实现 本设计利用protues8.7软件实现仿真设计,具体如图。 Protues也是在单片机仿真设计中常用的设计软件之一,通过设计出硬件电路图,及写入驱动程序,就能在不实现硬件的情况进行电路调试。 02 汇编程序 本设计汇编语言编写,主代码具体如下: ORG 0000H LJMP MAIN ORG 0003H LJMP PINT0 ORG 000BH

    1.1K10编辑于 2022-07-27
  • 来自专栏乱码三千

    汇编语言之MIPS汇编

    MIPS汇编中的分段处理 .data #数据段 .text #代码段 传送指令 加载立即数指令 li li(load immediate) :用于将立即数传送给寄存器 li $t0,1 ;十六进制数据使用 将以下c代码转换成mips汇编代码: //求累加之和 //1+2+3+.....+100 int i=1; int s=0; while(i<=100){ s=s+i; ,如果我们要依次打印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); } 有没有办法使得汇编能像高级语言一样简洁呢? 汇编实现二维数组定义 #需求:实现int a[3][3] = {{1, 2, 3}, {5, 6, 7}, { 10, 11, 12}}; #以下是以 行不动 列轮动的方式实现 .data da:

    10.9K31发布于 2021-08-24
  • 来自专栏电子工程师成长日记

    设计分享|单片机抢答器(汇编

    另外 STC89X51 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。 资料内容 01 仿真实现 本设计利用protues8.7软件实现仿真设计,具体如图。 Protues也是在单片机仿真设计中常用的设计软件之一,通过设计出硬件电路图,及写入驱动程序,就能在不实现硬件的情况进行电路调试。 02 汇编程序 本设计汇编语言编写,主代码具体如下: ORG 000 JMP BEGIN TABLE: #0FFH ;P2口置高电平,准备接收信号 MOV R4, #0 ; "R4"的位标志值清零。

    86420编辑于 2022-07-27
  • 来自专栏LongJava学习资料

    汇编语言篇——顺序程序、循环程序设计

    一 实验目的和要求1、熟悉并掌握[BX] 和LOOP的使用; 2、掌握有多个段的程序编程、调试。 运行结果:2、下面的程序的功能时将“mov ax,4c00h”之前的指令复制到内存0:200处,补全程序,上机调试,跟踪运行结果。 assume cs:codea segment db 1,2,3,4,5,6,7,8a endsb segment db 1,2,3,4,5,6,7,8b endsc segment db 0,0,0,0,0,0,0,0c mov es,ax         mov bx,0         mov cx,8s0:     mov ax,[bx]         mov es:[bx],ax         add bx,2                   mov ss,ax         mov sp,10h         mov bx,0         mov cx,8s:  push [bx]         add bx,2         

    85500编辑于 2023-11-30
  • 来自专栏sringboot

    x86汇编加载用户程序-4-2

    在显卡文本模式下25x80,换行就是+80,移动到行首就是 除以80取商再乘以80 疑问 汇编有函数吗? 一下是我的理解,有如果错误欢迎批评指正。 所以必须明确汇编在运行的时候没有遇到转移指令,call和ret或retf的时候都是一步一步向下执行的。 segment dd section.code_2.start data_1_segment dd section.data_1.start data_2_segment dd section.data \user2.ASM -o use2r.bin 编译代码,生成二进制文件。 分别写入到虚拟机的vhd的0号位,和100号位。 运行虚拟机显示如下 资源 汇编代码及二进制文件:https://github.com/duofanCoder/x86-NASM/tree/master/ASM-Learn-4-2/code 虚拟机固定大小硬盘

    1K30编辑于 2021-12-06
  • 来自专栏c++与qt学习

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

    调用子程序 mov ax,4c00h int 21h main endp code ends end start 编译和链接步骤如下 masm p1; masm p2; link p1.obj+p2.obj; ---- 汇编指令汇总 每个指令详细用法,大家咨询查询资料,这里只列举出常用的一些汇编指令汇总 数据传送指令 通用数据传送指令 MOV,PUSH,POP SEGMENT OGR 10 //默认分配在0地址处,但是上面有0RG,因此从10地址处进行分配 VAR1 DW 1234H ORG 20 //从20地址处开始分配 VAR2 //$为上面一条指令的地址 ORG $+8 //在$地址的基础上,加8,然后再对应的地址分配下面这个变量内存空间 VAR3 DW 1357H ALIGN伪操作: 包装数组边界从2的整数次幂地址开始 A DB 'morning' EVEN B DW 2 DUP(?) ---- 基数控制伪操作 如果不明确指定,默认使用当前规定的基数,如果在数值末尾明确指定了基数,则不使用全局默认基数。

    2.4K31编辑于 2022-07-12
  • 来自专栏Android点滴分享

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

    本篇介绍 本篇作为汇编系列的开篇,就先研究下汇编如何写helloworld。 信息,-F dwarf用来指定debug信息格式是dwarf,-l用来生成机器码和汇编的对应文件。 最后再看下生成的lst文件: 1 ; hello.asm 2 section .data 3 00000000 68656C6C6F2C20776F- msg db "hello, world",0 3 00000009 726C6400 这样就完成了汇编helloworld的学习了。

    1.4K40编辑于 2022-11-28
  • 来自专栏Android点滴分享

    汇编学习(2),数据表示与寄存器

    , 10,0 msg2Len equ $-msg2-1 radius dq 357 pi dq 3.14 section .bss section .text rdi,1 mov rsi, msg1 mov rdx,msg1Len syscall mov rax, 1 mov rdi,1 mov rsi, msg2 mov rdx, msg2Len syscall mov rsp, rbp ; epilogue pop rbp mov rax,60 mov rdi,0 syscall 编译后用gdb 加载并执行disassemble main,这时候会发现汇编是att格式的,如下: image.png 而我们写的汇编是intel风格的,这时候可以设置下 flavor,set disassembly-flavor intel, 再反汇编看下,就会看到格式变成intel了: image.png 这时候再简单提下prologue和epilogue对于gdb

    83930编辑于 2022-12-02
  • 来自专栏Republic博客

    汇编语言_汇编语言程序

    可以来看一段汇编源程序 assume cs:codesg codesg segment mov ax,0123h mov bx,0456h add ax,bx add ax,ax mov ax,4c00h int 21h codesg ends end 开头和结尾的两句代表伪指令 只有编译器可以读懂 汇编指令可以被翻译为机器码最终被cpu执行 汇编程序 就是包含汇编指令和伪指令的文本 mov ax,4c00h int 21h 跟C语言程序的return 0一样 返回控制权 一个汇编程序是由多个段组成的 这些段被用作各种空间来使用 一个有意义的汇编程序至少需要一个段 且每个段都需要段名 段名 segment- -段的开始 段名 ends--段的结束 assume假设 含义是假设某一段寄存器和程序中我们定义的段名关联起来 可以理解为和变量的引用一个意思 利用汇编程序计算2^3 assume cs:code code segment mov ax,2 add ax,ax add ax,ax code ends end 汇编程序的编写不是我学习的重点,这里直接跳过 需要的可以自己去看一下 [...]的规定与(

    1.3K20编辑于 2023-11-14
领券