1
나는 한 시간 동안 머리를 벽에 부딪쳐서 왜 아래가 작동하지 않는지 이해할 수 없다. 내가 b: db 1
b: db 0
에를 변경하는 경우 다음은, 10을 인쇄해야합니다 그렇지 않으면 대신 0을 인쇄해야합니다, 제가 조립을 기록하는 프로젝트를 쓰고 한 10간단한 조립 문제
프로그램은 항상 출력하고이 단위 테스트 중 하나입니다 실패하고 나는 그것을 얻지 못한다. 그것은 단순해야합니다.
extern printf, exit
section .bss
section .data
b: db 1
x: dd 5
y: dd 5
z: dd 0
int_pattern: db "%i", 10, 0
global main
section .text
main:
mov eax, dword [b]
cmp eax, dword 0
je condition_end4
; add x and y
; store into z
mov eax, dword [rel x]
add eax, dword [rel y]
mov [rel z], eax
condition_end4:
; rsi = &z
; rdi = &int_pattern
mov rsi, qword [z]
mov rdi, int_pattern
; not using vector registers
xor rax, rax
; printf(int_pattern, z);
call printf
저는 NASM과 함께 Debian Linux를 사용하고 있습니다. b
이 0 인 경우
nasm -f elf64 -o test.o test.asm
gcc test.o -o test.bin
와 연결/조립하여도, GDB는 cmp
설정 해제 ZF 그래서 내가 여기 손실에있어 것을 알 수있다.
감사합니다. 당신은 b를 선언 한