为了确定十六进制数是否为偶数,程序会将数字除以 2,余数应等于 0。如果不是,则它是奇数。最初,我的计划是有一个变量或寄存器,当十六进制被证明为偶数时,该变量或寄存器将递增。然后我就减去偶数的数量。到五即可得到奇数的数量。但由于我必须使用三个寄存器来保存被除数和除数 ( AX & BX),再加上另一个寄存器用于数组计数器 ( CX),所以我用完了寄存器来保存“偶数计数器”的值。
我修改了程序,使其仍然可以满足指令(见标题)。这次,程序将显示E偶数和O奇数的字符。我现在的问题是程序只能识别第二个数组项,这意味着 的值SI保持不变并且在第二个数组项之后不会增加。这使得程序的输出EOOOO而不是EOOOE.
SI我的问题是: 1.) 我将如何从内存中增加 的值并将其传递AX给除法 2.) 是否有可能使我的初始计划发挥作用?如果是,我可以使用什么寄存器来保存“偶数计数器”
这是代码:
.MODEL SMALL
 
READ MACRO MSG
    MOV AH,0AH
    LEA DX,MSG
    INT 21H
ENDM
SET MACRO MSG
    MOV AH,09H
    LEA DX,MSG
    INT 21H
ENDM
.DATA 
 
 CR EQU 0DH
 LF EQU 0AH
    ARR DW 100h,16Fh,191h,10Fh,120h 
    MSG1 DB CR,LF,"Array of 16 bit hexadecimals: 100h,16Fh,191h,10Fh,120h$"
    MSG2 DB CR,LF,"E=EVEN   O=ODD$"
    
    NUMERALEVEN DB CR,LF,"E$" …Run Code Online (Sandbox Code Playgroud)