간단한 어셈블리 코드를 작성하여 화면에 16 진수 값을 출력하려고합니다. print_screen.asm은 다른 모듈과 함께 작동하는 두 개의 파일입니다. 16 진수를 문자열로 변환하려고 할 때 문제가 내 논리에 있다고 생각합니다. 내 코드는 다음과 같습니다 [org 0x7c00]
xor dx,dx
xor ax,ax
xor bx,bx
mov dx,
나는 운동 문제를 해결하려고합니다. 작업은 터미널에서 10 개의 정수를 읽고 역순으로 출력하는 것입니다. 이렇게하려면 스택을 사용해야합니다. 나는 이것을 시도했다 : %include "asm_io.inc"
segment .data
prompt db "Please enter a number: ", 0
segment .text
global
NASM 어셈블러를 배우고 있으며 라인 피드를 처리하는 중 순간에 고생하고 있습니다. 어떻게 줄 바꿈을 인쇄합니까? 내가 보여줄거야. 중 하나를 사용할 수있는 sprint:
push rdx
push rbx
push rax
push rcx
mov rax, rcx
pop rcx
jmp next_ch
다음 코드의 문제점을 알고 있습니까? 내가 원하는대로 작동하지 않을 수 있습니다. 변수 (문자 'h')의 단일 문자를 인쇄하려고합니다. 는 은 [] ; Set BIOS print screen settings
mov ah, 0x0e ; Teletype
mov bh, 0 ; Page number
mov bl, 4 ; Red on black (0000010
일부 어셈블리 코드에 문제가 있습니다. 다른 어셈블리 파일의 함수를 사용하여 문자열을 출력하려고합니다. 그러나 문자열을 출력하는 것이 아니라 "S"를 출력합니다. 이 문제를 어떻게 해결할 수 있습니까? NASM 어셈블러를 사용하고 있다고 덧붙이고 싶습니다. 코드 : string.asm print_string:
pusha
mov ah, 0x0e
loop
Intel x64 어셈블리, NASM 컴파일러에서 "0x4000000000000000"상수를 ieee 754 표준 double에서 2.0과 같아야하는 메모리로 이동하려고합니다. 내가 사용하는 코드는 다음과 같습니다 즉시 DWORD 서명 경계를 초과 : %define two 0x4000000000000000
section .text
foo:
pus
나는 여기 Assembly - File Management을 가져온 튜토리얼의 간단한 "create prompt with file"코드를 작성하려고합니다. 하지만 매번 입력 할 때마다 터미널의 출력 문자열이 혼합되어 함께 잘립니다. 그리고 생성 될 파일도 섞여 있습니다. 코드는 여기에 있습니다 : I 입력 "잭" Masukkan nama Anda
Jack
당신이 시스템 호출 번호 4를 사용하여 뭔가를 인쇄 할 수 있습니다 mov eax,4 ;system call number
mov ebx,0 ;file descriptor
mov ecx,msg ;adress of message in data segment
mov edx,length ;length of message
그러나이 어떻게 스택 세그먼트