;tool_floppy_disk_wr.rar > Wr.asm, change:2006-04-15,size:9641b
;+FHDR------------------------------------------------------------------------
;
;Copyright (c),
;SuZhou Supereal Microelectronics Confidential Proprietary.
;
;$RCSfile: wr_secs.asm,v $
;
;$Author: yangwenbin/zhangyanan $
;E-mail:figureyang@yahoo.com.cn
;Abstract:
; writes data from hex-file into physical sectors of floppy disc.
;
;Reuse attention:
;1.Coding Style.
;
;$Id: OTHERS.INC,v 1.1.1.1 2006/3/6 18:02:20 yangwenbin/zhangyanan Exp $
;
;-FHDR------------------------------------------------------------------------
;=============================================================================
; usage:
; Usage:wr sourcefilename 0x115600 0x3000
;=============================================================================
.386
.MODEL SMALL
SSEG SEGMENT STACK
DB 256 DUP(?)
SSEG ENDS
CSEG SEGMENT USE16
ASSUME CS:CSEG, DS:CSEG, SS:SSEG
START: CALL FAR PTR GET_CMDPARAMS ;读取命令行参数
JC QUIT_TO_DOS ;命令行参数异常,返回DOS
MOV AX, CS
MOV DS, AX
MOV ES, AX
LEA SI,PARA2_BUF ;调用函数将读取的命令行参数2和3转换成十六进制逻辑扇区号和写长度
LEA DI,SEC_START
CALL FAR PTR CONVERTER
JC QUIT_TO_DOS ;转换异常,返回DOS
LEA SI,PARA3_BUF
LEA DI,SEC_NUM
CALL FAR PTR CONVERTER
JC QUIT_TO_DOS ;转换异常,返回DOS
CALL OPEN_SOURCE
JNC OPEN_FILE_OK
LEA DX,PMT_FAIL
MOV AH,9
INT 21H
JMP QUIT_TO_DOS ;打开文件异常,返回DOS
;
OPEN_FILE_OK: MOV BP, SEC_NUM
RE_W: CALL READ_SOURCE ;从文件读512D字节长数据
MOV SI, OFFSET BUF
MOV AX, SEC_START
MOV CX, 0001H
CALL RW_SECTORS ;写一个扇区
;
INC SEC_START
DEC BP
CMP BP, 00H
JNZ RE_W ;重复直至写完
;
QUIT: MOV AH, 3EH
MOV BX, FILE_HANDLE
INT 21H ;关闭文件
QUIT_TO_DOS: MOV AX, 4C00H
INT 21H
POPA
RET
;=============================================================================
;GET_CMDPARAMS
;读取命令行参数
;入口: 命令行参数缓冲区地址
;返回: CY-出错,NC-成功
;=============================================================================
GET_CMDPARAMS PROC NEAR
CLD
MOV AX,CSEG
MOV ES,AX
MOV SI,80H
LODSB
CMP AL,10 ;参数数目判断
JGE PARA_
PARA_UNOK: MOV AX,CSEG
MOV DS,AX
LEA DX,PROMPT
MOV AH,09
INT 21H
STC
RET ;命令参数异常,返回
PARA_: LEA DI,SOURCE_FILENAME
FILTER1: LODSB ;过滤空格
CMP AL,' '
JZ FILTER1
GET_PARA1: CMP AL,' ' ;读取参数1
JZ PARA1_OK
CMP AL,0DH
JZ PARA_UNOK
STOSB
LODSB
JMP GET_PARA1
PARA1_OK: MOV AL,0
STOSB
LEA DI,PARA2_BUF
FILTER2: LODSB ;过滤空格
CMP AL,' '
JZ FILTER2
GET_PARA2: CMP AL,' ' ;读取参数2
JZ PARA2_OK
CMP AL,0DH
JZ PARA_UNOK
STOSB
LODSB
JMP GET_PARA2
PARA2_OK: MOV AL,0
STOSB
LEA DI,PARA3_BUF
FILTER3: LODSB ;过滤空格
CMP AL,' '
JZ FILTER3
GET_PARA3: CMP AL,' ' ;读取参数3
JZ PARA_UNOK
CMP AL,0DH
JZ PARA3_OK
STOSB
LODSB
JMP GET_PARA3
PARA3_OK: MOV AL,0
STOSB
CLC
RET
GET_CMDPARAMS ENDP
;=============================================================================
;CONVERTER
;十六进制字符串转换成十六进制/200H
;入口: 字符串缓冲区首地址寄存器SI
;返回: 结果缓冲区地址寄存器DI,CY-出错,NC-成功
;=============================================================================
CONVERTER PROC FAR
PUSHA
MOV AX,0
MOV DX,0
MOV BL,BYTE PTR [SI] ;检查前缀0x或0X
INC SI
CMP BL,'0'
JNZ HEX_FAIL
MOV BL,BYTE PTR [SI]
INC SI
CMP BL,'X'
JZ PRE_OK
CMP BL,'x'
JNZ HEX_FAIL
PRE_OK: MOV BL,BYTE PTR [SI]
INC SI
CONVTER_LOOP: MOV CX,4 ;前缀OK,执行转换
SHL_4: SAL AX,1 ;DX,AX*16,左移四位
RCL DX,1
LOOP SHL_4
HEX_NUM: CMP BL,'9' ;数字字符,-48
JG HEX_UPPER
CMP BL,'0'
JL HEX_FAIL
SUB BL,48
JMP HEX_OK
HEX_UPPER: CMP BL,'F' ;大写字母,-55
JG HEX_LOWER
CMP BL,'A'
JL HEX_FAIL
SUB BL,55
JMP HEX_OK
HEX_LOWER: CMP BL,'f' ;小写字母,-87
JG HEX_FAIL
CMP BL,'a'
JL HEX_FAIL
SUB BL,87
HEX_OK: ADD AL,BL ;结果累加
ADC AH,0
ADC DX,0
MOV BL,BYTE PTR [SI]
INC SI
CMP BL,0
JNZ CONVTER_LOOP
CNVERT_OK: MOV CX,200H ;返回结果
DIV CX
CMP DX,0
JZ NO_ADD_1:
INC AX
NO_ADD_1: MOV WORD PTR [DI],AX
CLC
POPA
RET
HEX_FAIL: LEA DX,PROMPT_FAIL
MOV AH,9
INT 21H
LEA DX,USAGE
MOV AH,9
INT 21H
STC ;异常返回
POPA
RET
CONVERTER ENDP
;=============================================================================
;RW_SECTORS
;读写指定扇区号,指定数目的连续扇区
;入口: AX为逻辑扇区号,从零开始。CX为读取的扇区数。ES:SI为缓冲区起始地址
;返回: CY-出错,NC-成功
;=============================================================================
RW_SECTORS PROC NEAR
;PUSHA
PUSH CX
XOR CX, CX
MOV BX, 18 ;每磁道的扇区数目, ax % 18 + 1就是物理扇区号,而其商就是含磁头的
; ;磁道号,
; ;因为 扇区号 = 磁道数1*磁头数*扇区数+磁头数1*扇区数+扇区数1-1
; ;那么ax/18的商就是磁道数1*磁头数+磁头数1
; ;其商再除以磁头数商就是磁道数,而余数就是磁头数
; ;逻辑扇区号=(道号i*面数+面号)*每道扇区数+扇区号-1
XOR DX, DX
DIV BX
INC DX ;得到真实的扇区数
MOV CX, DX ;保存到cx
XOR DX, DX ;将得到商,再次除以磁头数目得到
MOV BX, 2 ;HEADCNT
DIV BX
;AX就是磁道数,dx就是磁头数
MOV CH, AL ;磁道的低8位
SHL AH, 6 ;将ah的低二位放到高二位
AND CL, 3FH
AND AH, 0C0H
OR CL, AH ;高二位放到cl的高二位
MOV DH, DL ;将磁头号送入dh
MOV DL, 0 ;驱动器号
POP AX ;获得读取扇区数目
MOV AH, 03h
MOV BX, SI
INT 13H
;POPA
RET
RW_SECTORS ENDP
;=============================================================================
OPEN_SOURCE PROC NEAR
MOV AX, 3D00H
MOV DX, OFFSET SOURCE_FILENAME
INT 21H
;
MOV FILE_HANDLE, AX
CMP AX,2
JNZ OPENED_OK
STC
JMP QUIT_OUT
OPENED_OK: CLC
QUIT_OUT: RET
OPEN_SOURCE ENDP
;=============================================================================
READ_SOURCE PROC NEAR
MOV AX, 3F00H
MOV BX, FILE_HANDLE
MOV CX, 512
MOV DX, OFFSET BUF
INT 21H
;
RET
READ_SOURCE ENDP
;=============================================================================
;-----------------------------------------------------------------------------
SOURCE_FILENAME DB 13 dup (?)
PARA2_BUF DB 13 DUP(?) ;Para buffer
PARA3_BUF DB 13 DUP(?) ;Para buffer
SEC_START DW ? ;= start_address/200H
SEC_NUM DW ? ;= write_len/200H
;
FILE_HANDLE DW 00H
BUF DB 512 DUP (00)
PROMPT DB '3 parameters required',0DH,0AH
USAGE DB 'Usage:wr sourcefilename 0x115600 0x3000',0DH,0AH,'
PROMPT_FAIL DB 'Invalid Hex parameter',0DH,0AH,'
PMT_FAIL DB 'Open file failed!',0DH,0AH,'
; CSEG ENDS END START ;End of File------------------------------------------------------------------ ;+FFTR------------------------------------------------------------------------ ; ;$Log: wr_secs.asm,v $ ; ;-FFTR------------------------------------------------------------------------
分享到:
相关推荐
显示器,鼠标,键盘的接法,提供了完整的电路图,已经检验过没有问题
Intel_ICH10R_RAID_floppy_MB
<END><br>40,chkdir.zip<br>Check for a Directory <END><br>41,getext.zip<br>Get a File's Extension<END><br>42,geticon.zip<br>Get a File's Icon<END><br>43,parseint.zip<br>Parse an Internet Filename<END>...
:floppy_disk: 数据库 1. DataBase 2. MySQL *3. Redis 4. 海量数据处理 :hammer: 消息中间件 1. Kafka 2. RabbitMQ :open_book: 系统设计 1. 常用框架 2. Web 安全 3. 分布式 *4. 微服务 5. 网站架构 :laptop: 工具...
软件介绍: ...分区模式:Removable、HDD Type、CD-ROM、Floppy..........mender: treedetail: add 2plane write when the mode is blockmode andthe good block is more than any cnt.
6 , chunks.zip<br>This will open a file and read it in "Chunks" of a selected file.<END><br>7 , logging.zip<br>This is a bas that will log installation procedures so the file can be removed later.<END...
genshin-scrapper :floppy_disk: 一堆脚本,用于解析api.genshin.dev的Genshin Impact数据 报废-https: 我学到的是 :brain: 使用cheerio报废 去做 修复ESLint 抓取更多数据 执照 :bookmark_tabs: (c)2021年...
Virtual Floppy Disk Simulate of floppy disk
MSI-ATI_SB600_IDE_Floppy
.....\......\.......\floppy.c .....\......\.......\hd.c .....\......\.......\ll_rw_blk.c .....\......\.......\Makefile .....\......\.......\ramdisk.c .....\......\chr_drv .....\......\.......\...
具体用法和注意事项察看readme.txt<br>这个程序是那时完全因为实际需要而写的,当时为了尽快能用,所以也写得比较仓促,另外那时计算机水平也算是初级,对c语言某些细节还没弄清楚,代码不那么优美让人见笑了,呵呵...
Drive Controllers, Floppies and Hard Disk. CD-ROM, CD-R and CD-RW. Parallel Ports and Printers. Serial Ports and Modems. Network Adapters and LANs. CMOS RAM and Realtime Clock. Keyboard. ...
[2884071] [AIX host] prefetch: EIP [00010000] > CS.limit [0000ffff] [3053542] 64 bit mode: far-jmp instruction is error [3011112] error compile vs2008/2010 with X2APIC [3002017] compile error with...
Information on Interfacing Various Floppy's to the Floppy Disk COntroller.
Interface Floppy Drives to TRS-80 Model 4.
diskb.img -- a dos format disk image. can be w/r with mtools. example: mdir b:, mcopy b:, mdel b:filename bochsrc-fd.bxrc -- bochs rc file configured for using disk root iamge. bochsrc-hd.bxrc...
单个:floppy_disk:软盘上的嵌入式:penguin:LinuxOP单个a软盘上的嵌入式:penguin:Linux文章请在https://bits.p1x.in/floppinux-an-embedded-linux-on-a-single-floppy中阅读全文/ EPUB手册只读手册:此仓库...
Put RTL SCO UnixWare Driver diskette to floppy A: and use doscp command to copy RTL SCO UnixWare Driver into UNIX's directories. NOTE: In UnixWare 7.1.1, you must install the "mtools" package ...
This is Vboot floppy disk.
:floppy_disk: 通过手机自动备份 :rainbow: 兼容gatsby-image 用法 从NPM注册中心下载gatsby-source-google-photos : yarn add gatsby-source-google-photos gatsby-transformer-sharp gatsby-plugin-sharp 该...