MS-DOS 6.22で動作し、MSCDEXと割り込みを使用してCD-ROMにアクセスする必要があるTurbo C++ 3.0でCプログラムを作成しようとしています。トラックを再生する。ドキュメントファイルからTurbo C++ 3.0のインラインアセンブリコード(TASM)を作成する
Turbo Cは私にとっては問題ではありませんでした。私はすでにそれを行いましたが、うまくいきましたが、今はthisのドキュメントを使ってCD-ROMデバイスドライバの名前を取得しようとしています。ここで
は私のコードです:
#include <stdio.h>
#include <dos.h>
void main(){
clrscr();
CDname();
printf("\nPress a button to exit the program.");
getch();
}
void CDname(){
char myArray[15];
int i;
asm{
mov AX,1501H
les BX,DWORD PTR[myArray]
int 2FH
}
for(i=0; i < 15; i++){
printf("\nArray = %c", myArray[i]);
}
}
そして、ここでは、私は従うことをしようとしているドキュメントの小さな一部です:
How do I get the name of the CD-ROM device driver?
First, you need to know how many CD-ROMs you have (see question
2.01, How many CD-ROMs are present?). You need a block of memory
whose size, in bytes, is 5 times the number of CD-ROMs present.
This code will fill that array:
mov AX,1501H
les BX,DriverArray
int 2FH
Each 5-byte element in the array consists of the drive's subunit
number (a CD-ROM device driver may support several drives as
subunits), followed by the address of the drive's device driver.
The filename is 10 bytes into the device driver. The filename is
at most 8 bytes long, and if less than 8 bytes, is terminated by
a space (20H).
問題は、私は置く必要があるということですCD- ROMの名前をmyArrayの中に入れますが、このようにして私は自分が何をしているのかよく分かりません。誰かが私を助けることができますか?
ありがとうございます!
名前が配列にありません。名前はデバイスドライバ内にあり、配列はその配列を指します。 –
@RossRidgeあなたは私にそれを説明するための例を挙げることができますか?アセンブラ文と混同しているので、私は本当に感謝しています –
'char myArray [15]'の代わりに、 'struct foo1 {char subunit;構造体foo2 * ptr; }; '' struct foo2 {char junk [10]; char name [8];}; 'あなたの構造体はpack(1)を使用しなければならないことに注意してください。また、 '名前'はほとんど確実にヌルで終了しないことに注意してください。最後に、foo1のインスタンスを宣言するときに、3つのデバイスが必要な場合は、 'struct foo1 devicedata [3];'という適切なサイズにしてください。 –