汇编小程序

汇编语言基础程序(持续更修…)

  • 数组求和

    ExitProcess PROTO
    
    .data
        arr WORD 1,2,3,4,5,6,7,8,9,10
    .code 
    main PROC
        mov rbx, 0
        mov rcx, LENGTHOF arr ;获取arr元素个数
    	mov rsi, OFFSET arr   ;获取arr的首地址
    Addsum:
        add bl, [rsi]         ;获取rsi寄存器中保存地址对应的值x,bl += x
    	add rsi, TYPE WORD    ;获取arr数组的下一个元素地址
    	loop Addsum
        
    	mov rax, rbx
    main ENDP
    END
    
  • 字符串复制

    ExitProcess PROTO
    
    .data
        src_str BYTE "this is a test",0
    	dst_str  BYTE  50 DUP(?)
    .code 
    main PROC
        mov rcx, LENGTHOF src_str ;获取src_str元素个数
    	mov rsi, OFFSET src_str   ;获取src_str的首地址
    	mov rbx, OFFSET dst_str ;获取dst_str首地址
    copy_string:
        mov r8, rbx
        mov al, [rsi]
        mov [rbx], al
    	add rsi, 1    ;获取arr数组的下一个元素地址
    	add rbx, 1
    	loop copy_string
        
    	mov r8, rbx
    main ENDP
    END
    
  • 交换双字变量的高低16位

    ExitProcess PROTO
    
    .data
        three DWORD 11112222h
    .code 
    main PROC
        mov r8, OFFSET three + 2
        mov eax, three ;ax 2222
    	mov bx, WORD PTR [r8] ;bx 1111
    	xchg WORD PTR three, bx
    	xchg WORD PTR [r8], ax
    main ENDP
    END
    
  • 利用运行时堆栈反转字符串

    ;64位汇编程序模板 (Template)
    ;声明一个ExitProcess函数
    ExitProcess PROTO
    
    .data
        my_str BYTE "this is a test",0
        my_strlen WORD ($ - my_str) - 1
    .code 
    main PROC
        mov rbx, OFFSET my_str
        movzx rcx , my_strlen
        mov rsi, 0
    push_str:
        movzx rax, my_str[rsi]
        push rax
        inc rsi
        loop push_str
    
        movzx rcx , my_strlen
        mov rsi, 0
    pop_str:
        pop rax
        mov my_str[rsi], al
        inc rsi
        loop pop_str
    main ENDP
    END
    
  • 从主过程中调用其他过程实现属组求和

    ExitProcess PROTO
    
    .data
    	arr WORD 1234h, 2345h, 3456h, 4567h
    	arrSum WORD 0
    	arrSum2 WORD 1
    .code 
    
    Sum_arry PROC
        push rcx
    	mov rsi, 0
    	mov rax, 0
    L1:
        mov ax, arr[rsi]
    	add arrSum, ax
    	inc rsi
    	loop L1
    	
    	mov arrSum, ax
    	pop rcx
    	ret
    Sum_arry ENDP
    
    main PROC
    	mov rcx, LENGTHOF arr
    	call Sum_arry
    main ENDP
    END
    

相关推荐

  1. 汇编程序

    2024-05-26 05:18:25       28 阅读
  2. 实时数据库测试-汇编程序

    2024-05-26 05:18:25       34 阅读
  3. 实时数据库测试-汇编程序2

    2024-05-26 05:18:25       27 阅读
  4. 智能程序相关名词解释(汇总

    2024-05-26 05:18:25       59 阅读
  5. 程序开发】出行 API 汇总(一)

    2024-05-26 05:18:25       34 阅读
  6. 微信程序面试题汇总

    2024-05-26 05:18:25       20 阅读
  7. 程序API开发——文件FileSystemManager参数汇总

    2024-05-26 05:18:25       44 阅读
  8. 程序】基础API之系统API接口汇总

    2024-05-26 05:18:25       42 阅读
  9. 程序API能力汇总——基础容器API(二)

    2024-05-26 05:18:25       41 阅读
  10. 程序API能力汇总——基础容器API(三)

    2024-05-26 05:18:25       56 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-26 05:18:25       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-26 05:18:25       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-26 05:18:25       82 阅读
  4. Python语言-面向对象

    2024-05-26 05:18:25       91 阅读

热门阅读

  1. 怎样使用类和对象

    2024-05-26 05:18:25       26 阅读
  2. CentOS配置应用服务自启动

    2024-05-26 05:18:25       28 阅读
  3. 单体应用与微服务的优缺点

    2024-05-26 05:18:25       33 阅读
  4. Vue 组件的生命周期钩子有哪些用途是什么

    2024-05-26 05:18:25       28 阅读
  5. 家政项目day3 区域服务模块开发

    2024-05-26 05:18:25       33 阅读
  6. [个人笔记] 记录CentOS7构建docker-ce的过程

    2024-05-26 05:18:25       30 阅读
  7. FOC之反park变化推导笔记

    2024-05-26 05:18:25       21 阅读
  8. git push

    2024-05-26 05:18:25       22 阅读
  9. 基于python flask的web服务

    2024-05-26 05:18:25       25 阅读
  10. Vue3:封装Table 表格组件问题修改

    2024-05-26 05:18:25       37 阅读
  11. redis查看一个key占用了多少内存

    2024-05-26 05:18:25       31 阅读