これまでに学んだことを示すために、nasm を使用して簡単な電卓を作成しています... Linux を使用しています。割り込み 80h を呼び出すと、指定された長さの文字列ではなく、すべての文字列が出力されます。これを修正するにはどうすればよいですか?`
SECTION .data
AskForCalculationPrompt: db "Choose which operation you want", 0xA, "1. Addition", 0xA, "2.Subtraction", 0xA, "3. Multiplication", 0xA, "4. Division", 0x3
FirstOperandPrompt: db "Enter the first operand:", 0xA
SecondOperandPrompt: db "Enter the second operand:", 0xA
AnswerPrompt: db "The answer is: "
AskForCalculationPromptln: equ $-AskForCalculationPrompt
FirstOperandPromptln: equ $-FirstOperandPrompt
SecondOperandPromptln: equ $-SecondOperandPrompt
AnswerPromptln: equ $-AnswerPrompt
SECTION .bss
Choice: resb 1
FirstOperand: resd 1
SecondOperand: resd 1
Answer: resd 1
SECTION .text
;Make interrupt to ask for a prompt ask for calculation prompt
global _start
_start:
mov eax, 4 ;Specify sys_write call
mov ebx, 1 ;Standard output
mov ecx, AskForCalculationPrompt
mov edx, AskForCalculationPromptln
int 80h
;error happens here.
;Make interrupt to read textfrom keyboard
mov eax, 3 ;Sys_read call
mov ebx, 0 ;Standard input file descriptor 0
mov ecx, Choice
mov edx, 1
int 80h
;Determine what we inserted
mov al, byte [Choice]
cmp al, 0x35
je _start`