提供的代碼使用預定義數組:
DATA DB 74,58,65,69,254,187,6,11,98,33
需修改為運行時從鍵盤輸入 10 個 8 位無符號整數。
DATAS SEGMENT
BUFFER DB 10 DUP(?) ; 輸入緩衝區
PROMPT DB 'Enter 10 numbers (0-255): $'
NO_STR DB 'NO ODD NUMBER$'
; ... 其他數據定義保持不變
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES, DS:DATAS
START:
MOV AX, DATAS
MOV DS, AX
; 顯示提示
LEA DX, PROMPT
MOV AH, 09H
INT 21H
; 循環輸入 10 個數
LEA DI, BUFFER
MOV CX, 10
INPUT_LOOP:
; 讀取一個字符(0-9)
MOV AH, 01H
INT 21H ; AL = 輸入字符,並回顯
SUB AL, '0' ; 轉為數值 0-9
MOV [DI], AL
INC DI
LOOP INPUT_LOOP
; 原有查找最小奇數邏輯保持不變,只需將 DATA 改為 BUFFER
LEA SI, BUFFER
; ... 後續代碼中所有引用 DATA 的地方改為 BUFFER/SI
; 例如:MOV AL, [SI+BX] 替代 MOV AL, [SI+BX] (原TABLE)
; 輸出結果邏輯保持不變
; ...
MOV AH, 4CH
INT 21H
CODES ENDS
END START
BUFFER DB 10 DUP(?)INT 21H AH=01H 逐字符讀取輸入SUB AL, '0'(假設輸入單個數字 0-9)TABLE 替換為運行時填充的 BUFFER若需輸入 0-255 的多位數,需實現字符串解析:
; 簡易版:調用 DOS 字符串輸入 AH=0AH
LEA DX, INPUT_BUF
MOV AH, 0AH
INT 21H
; 然後解析 INPUT_BUF 中的字符串為數字
BCD_output 等子程序可保留複用