| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
哪个汇编大佬来帮我分析下这个程序??? 
 
 
基本的逻辑都能看懂,但是细节上还有欠缺!!比较三个数的大小,然后输出最大的数字 
 
section .text 
    global _start 
 
_start: 
    mov ecx, [num1] 
    cmp ecx, [num2] 
    jg check_third_num 
    mov ecx, [num2] 
 
check_third_num: 
    cmp ecx, [num3] 
    jg _exit 
    mov ecx, [num3] 
 
_exit: 
    mov [largest], ecx 
    mov ecx, msg 
    mov edx, len 
    mov ebx, 1 
    mov eax, 4 
    int 0x80 
 
    mov ecx, largest 
    mov edx, 2 
    mov ebx, 1 
    mov eax, 4 
    int 0x80 
 
    mov eax, 1 
    int 80h 
 
section .data 
    msg db "The largest digit is: ", 0xA, 0xD 
    len equ $- msg 
    num1 dd '1' 
    num2 dd '2' 
    num3 dd '3' 
 
segment .bss 
    largest resb 2 
1、0xA,  是换行符号 
2、0xd,是回车符号 
3、$代表当前语句地址 
4、len equ $ - msg  表示   len =(equ是等于号) 当前语句地址 - (- 是个减号) msg 的首地址,其实,就是计算msg的长度。 
5、len 不是个变量 ,是个常数 
6、不要用高级语言的思维来学习汇编。 
 
 
 
 |   
 
 
 
 |