汇编小程序

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

  • 数组求和

    c++ 复制代码
    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
  • 字符串复制

    c++ 复制代码
    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位

    c++ 复制代码
    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
  • 利用运行时堆栈反转字符串

    cpp 复制代码
    ;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
  • 从主过程中调用其他过程实现属组求和

    cpp 复制代码
    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
相关推荐
我在人间贩卖青春11 天前
汇编之伪指令
汇编·伪指令
我在人间贩卖青春11 天前
汇编之伪操作
汇编·伪操作
济61711 天前
FreeRTOS基础--堆栈概念与汇编指令实战解析
汇编·嵌入式·freertos
myloveasuka11 天前
汇编TEST指令
汇编
我在人间贩卖青春11 天前
汇编编程驱动LED
汇编·点亮led
我在人间贩卖青春11 天前
汇编和C编程相互调用
汇编·混合编程
myloveasuka12 天前
寻址方式笔记
汇编·笔记·计算机组成原理
请输入蚊子12 天前
《操作系统真象还原》 第六章 完善内核
linux·汇编·操作系统·bochs·操作系统真像还原
myloveasuka12 天前
指令格式举例
汇编·笔记·计算机组成原理
我在人间贩卖青春13 天前
汇编之分支跳转指令
汇编·arm·分支跳转