分享

【新提醒】计算ROM 存储芯片CHECKSUM的汇编程序源代码

 jzpjzl 2022-11-28 发布于河南
 早期电脑 ISA 卡上 ROM 程序,只有 CHECKSUM = 0 时, 方能被主板 BIOS 识别到,本程序用于计算 烧录 ROM 程序的校验和,和大家共享。

CSEG      SEGMENT 'CODE'
          ASSUME CS:CSEG,DS:CSEG
          ORG 100H
  _MAIN:
          MOV AX,CSEG
          MOV DS,AX
          MOV ES,AX
          JMP _START

;==========================================

HANDLE    DW 0000H
FILENAME  DB "BIOS.BIN"            // 烧录文件名 BIOS.BIN

BUFFER    DB 4100 DUP (00H)     

OERR      DB 'MAKE SURE BIOS.BIN IS PRESENT.',24H   // 错误信息
ASCII     DB '0123456789ABCDEF'

;==========================================

  _START:
          MOV AH,3DH
          MOV DX,OFFSET FILENAME
          XOR AL,AL
          INT 21H
          JNC _NEXT1

          MOV DX,OFFSET OERR
          MOV AH,09H
          INT 21H
          JMP _EXIT

  _NEXT1:
          MOV HANDLE,AX

          MOV AH,3FH
          MOV BX,HANDLE
          MOV CX,4100
          MOV DX,OFFSET BUFFER
          INT 21H

          MOV SI,OFFSET BUFFER
          XOR AX,AX
          MOV AL, BYTE PTR SI[2]
          MOV CL,9
          SHL AX,CL
          MOV CX,AX

          XOR AX,AX
  _NEXT2:
          ADD AL,BYTE PTR [SI]
          INC SI
  LOOP _NEXT2

          MOV CL,4

          MOV CH,AL
          XOR AH,AH
          SHR AL,CL
          MOV SI,AX
          MOV AL,ASCII[SI]
          MOV BX,0
          MOV AH,0EH
          INT 10H

          MOV AL,CH
          AND AX,0FH
          MOV SI,AX
          MOV AL,ASCII[SI]
          MOV BX,0
          MOV AH,0EH
          INT 10H

  _EXIT:
          MOV AX,4C00H
          INT 21H

;==========================================

CSEG      ENDS
          END _MAIN

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多