2

これまでに学んだことを示すために、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`
4

1 に答える 1