汇编语言不过如此而已五.docx

上传人:b****8 文档编号:10221033 上传时间:2023-02-09 格式:DOCX 页数:34 大小:300.45KB
下载 相关 举报
汇编语言不过如此而已五.docx_第1页
第1页 / 共34页
汇编语言不过如此而已五.docx_第2页
第2页 / 共34页
汇编语言不过如此而已五.docx_第3页
第3页 / 共34页
汇编语言不过如此而已五.docx_第4页
第4页 / 共34页
汇编语言不过如此而已五.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

汇编语言不过如此而已五.docx

《汇编语言不过如此而已五.docx》由会员分享,可在线阅读,更多相关《汇编语言不过如此而已五.docx(34页珍藏版)》请在冰豆网上搜索。

汇编语言不过如此而已五.docx

汇编语言不过如此而已五

汇编语言,不过如此而已(五)

第五章:

BIOS中断

第1节:

中断号

第2节:

显示操作(INT_NUMBER=OX10)

+功能号(存于AH)列表

+显示操作类宏

;显示模式的设置(00h)

MODE_640*400_256EQU100H

MODE_640*480_256EQU101H

MODE_800*600_16EQU102H

MODE_800*600_256EQU103H

MODE_1024*768_16EQU104H

MODE_1024*768_256EQU105H

MODE_1280*1024_16EQU106H

MODE_1280*1024_256EQU107H

setDispModemacromode

MOVAX,4F02H

MOVBX,mode

INT10H

endm

;设置光标形状(01h)

setCursorFramemacrostartRow,endRow

MOVAH,01H

MOVCH,startRow

MOVCL,endRow

INT10H

endm

;设置光标位置(02)

setCursorPositionmacrorowIdx,colIdx

MOVAH,02H

MOVDH,rowIdx

MOVDL,colIdx

INT10H

endm

;获取光标信息(03)

cursorInfostruc

startRowdb?

endRowdb?

rowIdxdb?

colIdxdb?

cursorInfoends

rifcursorInfo<0,0,0,0>

getCursorInfomacroret_cursor_info

MOVAH,03H

MOVBH,0

INT10H

MOVrif.startRow,CH

MOVrif.endRow,CL

MOVrif.rowIdx,DH

MOVrif.colIdx,DL

endm

;获取光笔信息(04h)

lightPenstruc

statedb?

pixelRowdw?

pixelColdb?

charRowdb?

charColdb?

lightPenends

rlplightPen<0,0,0,0,0>

getLightPenInfomacrorlp

MOVAH,04H

INT10H

MOVrlp.state,AH

MOVrlp.pixelRow,BX

MOVrlp.charRow,DH

MOVrlp.charCol,DL

.ifCH!

=0

MOVrlp.pixelCol,CH

.else

MOVrlp.pixelCol,CL

.endif

endm

;设置显示页(05h)

setDisplayPagemacropage

MOVAH,05H

MOVAL,page

INT10H

endm

;设置滚屏(06h-07h)

DIRECTION_UPEQU06H

DIRECTION_DOWNEQU07H

setScreenCrollmacrodir,rows,t,l,b,r

MOVAH,dir

MOVBH,rows

MOVCH,t

MOVCL,l

MOVDH,b

MOVDL,r

INT10H

endm

;读取光标位字符及属性(08h)

propCharstruc

attrdb?

chardb?

propCharends

cursorCharpropChar

>

getCursorCharmacrocursorChar

MOVAH,08H

INT10H

MOVcursorChar,AH

MOVcursorChar,AL

endm

;在光标位显示字符及属性(09h)

dispCursorCharmacrochar,attr,repeats

MOVAH,09H

MOVAL,char

MOVBL,attr

MOVCX,repeats

INT10H

endm

;在光标位按原属性显示字符(0Ah)

dispCursorCharPropmacrochar,color,repeats

MOVAH,0Ah

MOVAL,char

MOVBL,color

MOVCX,repeats

INT10H

endm

;设置背景色或调色版(0Bh)

SET_BACKGROUND_COLOREQU00H

SET_PALETE_TYPEEQU01H

setColorTypemacrotype,value

MOVAH,0Bh

.iftype=SET_BACKGRPUND_COLOR

MOVBH,00h

MOVBL,value

.elseiftype=SET_PALETE_TYPE

MOVBH,01H

MOVBL,value

.endif

INT10H

endm

;写图形像素(0Ch)

writeImagePixelmacrovalue,rowIdx,colIdx

MOVAH,0Ch

MOVAL,value

MOVCX,rowIdx

MOVDX,colIdx

INT10H

endm

;读图形像素(0Dh)

readImagePixelmacrovalue,rowIdx,colIdx

MOVAH,0Dh

MOVCX,rowIdx

MOVDX,colIdx

INT10H

MOVvalue,AL

endm

;在电传打字机模式显示单个字符(0Eh)

dispSingleCharAtTeleTypemacrochar

MOVAH,0Eh

MOVAL,char

INT10H

endm

;获取显示模式(0Fh)

getDispModemacrocharsPerRow,mode

MOVAH,0Fh

INT10H

MOVcharsPerRow,AH

MOVmode,AL

endm

;在电传打字机模式显示单个字符(13h)

dispStringAtTeleTypemacrostrAdress,rowIdx,colIdx

MOVAX,strAddress

MOVBP,AX

MOVAX,1301H

MOVBX,07H

MOVDH,rowIdx

MOVDL,colIdx

INT10H

Endm

 

第3节:

磁盘操作(INT_NUMBER=OX13)

+功能号(存于AH之中)

+磁盘操作相关宏

;磁盘复位(功能号:

00H)

setDiskResetmacrodrive,ret

MOVAH,00H

MOVDL,drive

INT13H

MOVret,AH

endm

;读取磁盘系统状态(功能号:

01H)

getDiskStatemacrodrive,state

MOVAH,01H

MOVDL,drive

INT13H

MOVstate,AL

endm

;读扇区(功能号:

02H)

readSectormacrosectors,cylinder,sector,disk_header,drive,buffer,ret

MOVAH,02H

MOVAL,sectors

MOVBX,buffer

MOVCH,cylinder

MOVCL,sector

MOVDH,disk_header

MOVDL,drive

INT13H

MOVret,AH

endm

;写扇区(功能号:

03H)

writeSectormacrosectors,cylinder,sector,disk_header,drive,buffer,ret

MOVAH,03H

MOVAL,sectors

MOVBX,buffer

MOVCH,cylinder

MOVCL,sector

MOVDH,disk_header

MOVDL,drive

INT13H

MOVret,AH

endm

;扇区检验(功能号:

04H)

sectorVerifymacrosectors,cylinder,sector,disk_header,drive,buffer,ret

MOVAH,03H

MOVAL,sectors

MOVBX,buffer

MOVCH,cylinder

MOVCL,sector

MOVDH,disk_header

MOVDL,drive

INT13H

MOVret,AH

endm

;格式化磁道(功能号:

05H)

formatTrackmacroinnerLeave,cylinder,diskHeader,drive,addressArea,errCode

MOVAH,05H

MOVAL,innerLeave

MOVBX,addressArea

MOVCH,cylinder

MOVDH,diskHeader

MOVDL,drive

INT13H

MOVerrCode,AH

endm

;格式化坏磁道(功能号:

06H)

formatErrorTrackmacroinnerLeave,cylinder,diskHeader,drive,addressArea,errCode

MOVAH,06H

MOVAL,innerLeave

MOVBX,addressArea

MOVCH,cylinder

MOVDH,diskHeader

MOVDL,drive

INT13H

MOVerrCode,AH

endm

;格式化驱动器(功能号:

07H)

formatDrivemacroinnerLeave,cylinder,drive,errCode

MOVAH,07H

MOVAL,innerLeave

MOVCH,cylinder

MOVDL,driver

INT13H

MOVerrCode,AH

endm

;读驱动参数(功能号:

08H)

driveInfostruc

errCodedb?

sizedb?

cylindersdw?

sectorsdb?

diskHeadersdb?

driversdb?

varListAddrdw?

driveInfoends

dridriveInfo<>

getDriveInfomacrodrive,dri

MOVAH,08H

MOVDL,driver

INT13H

MOVdri.errCode,AH

MOVdri.size,BL

MOVdri.diskHeaders,DH

MOVdri.drives,DL

MOVdri.varListAddr,DI

PUSHAX

;确定扇区数(CL:

0-5Bit)

MOVAL,CL

ANDAL,3FH;00111111

MOVdri.sectors

;确定柱面数(CL:

6-7bit+CH)

MOVAL,CH

MOVAH,CL

ANDAH,C0H;11000000

SHRAH,6H

MOVdri.cylinders,AX

POPAX

endm

;初始磁盘参数(功能号:

09H)

initDiskmacrodrive,errCode

MOVAH,09H

MOVDL,drive

INT13H

MOVerrCode,AH

endm

;读长扇区(功能号:

0AH)

readLongSectormacrosectors,cylinder,sector,diskHeader,buffer,drive,errCode,sectorRead

MOVAH,0AH

MOVAL,sectors

MOVBX,buffer

MOVCH,cylinder

MOVCL,sector

MOVDH,diskHeader

MOVDL,drive

INT13H

MOVerrCode,AH

MOVsectorRead,AL

endm

;写长扇区(功能号:

0BH)

writeLongSectormacrosectors,buffer,cylinder,sector,diskHeader,drive,errCode,sectorWrite

MOVAH,0BH

MOVAL,sectors

MOVBX,buffer

MOVCH,cylinder

MOVCL,sector

MOVDH,diskHeader

MOVDL,drive

INT13H

MOVerrCode,AH

MOVsectorWrite,AL

endm

;查询(功能号:

0CH)

excuteQuerymacrocylinder,diskHeader,drive,errCode

MOVAH,0CH

PUSHAX

MOVAX,cylinder

MOVCH,AL

SHLAH,6

MOVCL,AH

POPAX

MOVDH,diskHeader

MOVDL,driver

INT13H

MOVerrCode,AH

endm

;磁盘系统复位(功能号:

0DH)

setSystemResetmacrodrive,errCode

MOVAH,0DH

MOVDL,drive

INT13H

MOVerrCode,AH

endm

;读扇区缓存(功能号:

0EH)

readSectorBuffermacrobuffer,errCode

MOVAH,OEH

MOVBX,buffer

INT13H

MOVerrCode,AH

endm

;写扇区缓存(功能号:

0FH)

writeSectorBuffermacrobuffer,errCode

MOVAH,OFH

MOVBX,buffer

INT13H

MOVerrCode,AH

endm

;读驱动状态(功能号:

10H)

getDriveStatemacrodrive,errCode

MOVAH,10H

MOVDL,drive

INT13H

MOVerrCode,AH

endm

;校验驱动(功能号:

11H)

driveVerifymacrodrive,errCode

MOVAH,11H

MOVDL,drive

INT13H

MOVerrCode,AH

endm

;控制器RAM校验(功能号:

12H)

controlRAMVerifymacroerrCode

MOVAH,12H

INT13H

MOVerrCode,AH

endm

;控制器驱动校验(功能号:

13H)

controlDriveVerifymacroerrCode

MOVAH,13H

INT13H

MOVerrCode,AH

endm

;控制器内部校验(功能号:

14H)

controlInnerVerifymacroerrCode

MOVAH,14H

INT13H

MOVerrCode,AH

endm

;获取磁盘类型(功能号:

15H)

getDiskTypemacrodrive,typeCode

MOVAH,15H

MOVDL,drive

INT13H

MOVtypeCode,AH

endm

;获取磁盘变化状态(功能号:

16H)

getDiskChangeStatemacrodrive,changeCode

MOVAH,16H

MOVDL,drive

INT13H

MOVchangeCode,AH

endm

;设驱动类型(功能号:

17H)

setDriveStatemacrotypeCode,drive,errCode

MOVAH,17H

MOVAL,typeCode

MOVDL,drive

INT13H

MOVerrCode,AH

endm

;格式化媒体类型(功能号:

18H)

getFormatMediaTypemacrocylinders,sectors,drive,mediaCode

MOVAH,18H

MOVCH,cylinders

MOVCL,sectors

MOVDL,drive

INT13H

MOVmediaCode,DI

endm

;磁头保护(功能号:

19H)

diskHeaderProtectmacro

;(略)

endm

;格式化ESDI驱动(功能号:

1AH)

formatESDIDrivemacro

;(略)

Endm

第4节:

串口操作(INT_NUMBER=OX14)

+功能号(存于AH)列表

+磁盘操作相关宏

;串口初始化(00H)

comInitmarcoinitCode,comNum

MOVAH,00H

MOVAL,initCode

MOVDX,comNum

INT14H

endm

;向串口写字符(01H)

writeCommacrochar,comNum

MOVAH,01H

MOVAL,char

MOVDX,comNum

INT14H

endm

;从串口读数据(02H)

readCommacrochar,comNum

MOVAH,02H

MOVDX,comNum

INT14H

MOVchar,AL

endm

;获取串口状态(03H)

getComStatemacrocomNum,comState,modemState

MOVAH,03H

MOVDX,colNum

INT14H

MOVcomState,AH

MOVmodemState,AL

endm

第5节:

其他操作(INT_NUMBER=OX15)

(续上页)

+其他操作相关宏

;开盒式磁带机马达(00H)

openBoxTapeDrivemacroerrCode

MOVAH,00H

INT15H

MOVerrCode,AH

endm

;关盒式磙带机马达(01H)

closeBoxTapeDrivemacroerrCode

MOVAH,01H

INT15H

MOVerrCode,AH

endm

;读盒式磙带机(02H)

readBoxTapeDrivemacrobuffer,readLength,readedLength,errCode

MOVAH,02H

MOVBX,buffer

MOVCX,readLength

INT15H

MOVDX,readedLength

MOVerrCode,AH

endm

;写盒式磙带机(03H)

writeBoxTapeDrivemacrobuffer,writeLength,writedLength,errCode

MOVAH,03H

MOVBX,buffer

MOVCX,writeLength

INT15H

MOVDX,writedLength

MOVerrCode,AH

endm

;格式化ESDI驱动器定时中断(0FH)

formatESDIDriveTimerInterruptmacro

;ps/2(略)

endm

;[读|写]自检错误记录(21H)

selfCheckErrRecordmacro

;ps/2(略)

endm

;键盘截听(4FH)

keyboardListenermacro

;ps/2(略)

endm

;设备打开(80H)

openDevicemacrodevice,process,errCode

MOVAH,80H

MOVBX,device

MOVCX,process

INT15H

MOVerrCode,AH

endm

;设备关闭(81H)

closeDevicemacrodevice,process,errCode

MOVAH,81H

MOVBX,device

MOVCX,process

INT15H

MOVerrCode,AH

endm

;进程中止(82H)

processSuspendmacroprocess,errCode

MOVAH,82H

MOVBX,process

INT15H

MOVerrCode,AH

endm

;事件等待(83H)

eventWaitmacrosignal,timeOut

MOVAH,83H

MOVAL,00H

MOVBX,signal

INT15H

endm

;读游戏杆(84H)

joyStickmacro

;(略)

endm

;系统请求健(85H)

sysRequestmacroactionCode,errCode

MOVAH,85H

MOVAL,actionCode

INT15H

MOVerrCode,AH

endm

;延迟(86H)

delaymacrotimeOut,errCode

MOVAH,86H

MOVDX,timeOut

INT15H

MOVerrCode,AH

endm

;移动扩展内存块(87H)

moveBlockmacroblocks,GDT,errCode

MOVAH,87H

MOVCX,blocks

MOVSI,GDT

INT15H

MOVerrCode,AH

endm

;读取扩展内存大小(88H)

readExtMemorymacrobyteReaded

MOVAH,88H

INT15H

MOVbyteReaded,AX

endm

;进入保护模式(89H)

enterProtectModemacroIRQ0,IRQ8,GDT,errCode

MOVAH,89H

MOVBH,IRQ0

MOVBL,IRQ8

MOVSI,GDT

INT15H

MOVerrCode,AH

endm

;设备等待(90H)

de

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1