《汇编语言》- 读书笔记 - 第17章-实验17 编写包含多个功能子程序的中断例程
实现通过逻辑扇区号对软盘进行读写
逻辑扇区
计算公式: 逻辑扇区号 =(面号*80+磁道号)*18+扇区号-1
let lg = (面, 道, 扇区) => (面*80+道)*18+扇区-1;
lg(1,60,10);
let logicalSectors = [];
for (let head = 0; head <= 1; head++) {
for (let track = 0; track <= 79; track++) {
for (let sector = 1; sector <= 18; sector++) {
logicalSectors.push([head,track,sector]);
}
}
}
console.table(logicalSectors);
面 |
道 |
扇区 |
逻辑扇区 |
0 |
0 |
1 |
0 |
↓ |
↓ |
↓ |
↓ |
1 |
79 |
18 |
2879 |
根据逻辑扇区号算出物理编号
物理编号 |
公式 |
面号 |
取商( 逻辑扇区号 / 1440 ) |
磁道号 |
取商( 取余( 逻辑扇区号 / 1440 ) / 18 ) |
扇区号 |
取余( 取余( 逻辑扇区号 / 1440 ) / 18) + 1 |
中断例程:通过逻辑扇区号对软盘进行读写
功能 |
通过逻辑扇区号对软盘进行读写 |
参数 |
ah = 功能号:0 =读,1 =写; dx = 逻辑扇区号; es:bx =用于读写的缓冲区 |
代码
安装 int 7ch
assume cs:code
code segment
start: ; ---------------- 安装(复制数据) ----