首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

匯編語言鍵盤輸入 10 個數尋找最小奇數:從預設數據改為運行時輸入

     編輯:程式設計綜合問答

原代碼分析

提供的代碼使用預定義數組:

DATA DB 74,58,65,69,254,187,6,11,98,33

需修改為運行時從鍵盤輸入 10 個 8 位無符號整數。

修改方案:DOS 中斷輸入

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

關鍵修改點

  1. 定義輸入緩衝區 BUFFER DB 10 DUP(?)
  2. 使用 INT 21H AH=01H 逐字符讀取輸入
  3. 字符轉數值:SUB AL, '0'(假設輸入單個數字 0-9)
  4. 將原 TABLE 替換為運行時填充的 BUFFER

進階:支持多位數輸入

若需輸入 0-255 的多位數,需實現字符串解析:

; 簡易版:調用 DOS 字符串輸入 AH=0AH
LEA DX, INPUT_BUF
MOV AH, 0AH
INT 21H
; 然後解析 INPUT_BUF 中的字符串為數字

注意事項

  • DOS 環境下輸入無緩衝區保護,需自行限制長度
  • 輸入驗證:檢查是否為數字、範圍 0-255
  • 原代碼的 BCD_output 等子程序可保留複用
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved