คำถามติดแท็ก x86-16


6
ฉันจะแยกรหัสเครื่อง 16 บิต x86 ดิบได้อย่างไร
ฉันต้องการแยกชิ้นส่วน MBR (512 ไบต์แรก) ของดิสก์ x86 ที่สามารถบู๊ตได้ที่ฉันมี ฉันคัดลอก MBR ไปยังไฟล์โดยใช้ dd if=/dev/my-device of=mbr bs=512 count=1 ข้อเสนอแนะสำหรับยูทิลิตี้ Linux ที่สามารถแยกไฟล์ได้mbrหรือไม่?
91 linux  assembly  x86  x86-16  mbr 

1
เหตุใด DOS จึงตั้งค่า SP register เป็น 0xFFFE หลังจากโหลดไฟล์. COM
ในหน้า wikpedia เกี่ยวกับไฟล์. COM https://en.wikipedia.org/wiki/COM_fileจะอ่าน: ไฟล์. COM ใน DOS ตั้งค่าเซกเมนต์ x86 ทั้งหมดที่ลงทะเบียนเป็นค่าเดียวกันและ SP (ตัวชี้สแต็ค) ลงทะเบียนเป็น 0xFFFE ดังนั้นสแต็กจะเริ่มต้นที่ด้านบนสุดของเซ็กเมนต์หน่วยความจำและทำงานจากที่นั่น แต่นี่จะเป็นการตั้งค่าสแต็กให้เริ่มหนึ่งคำด้านล่างด้านบนของกลุ่ม เมื่อกดค่าบนสแต็ก CPU จะลด SP เป็น 0xFFFC และเก็บค่าไว้ที่นั่น สาเหตุที่ DOS ไม่ตั้งค่า SP เป็น 0 แทนคืออะไร

2
พีซีวิดีโอฮาร์ดแวร์ที่ทันสมัยรองรับโหมดข้อความ VGA ใน HW หรือไม่ BIOS เลียนแบบ (ด้วยโหมดการจัดการระบบ) หรือไม่
สิ่งที่มันเกิดขึ้นในฮาร์ดแวร์คอมพิวเตอร์ที่ทันสมัย booted ใน 16 บิตมรดกโหมด BIOS MBR เมื่อคุณเก็บไบต์เช่น'1'(0x31) ลงในข้อความ VGA (โหมด 03) framebuffer ที่อยู่ทางกายภาพเชิงเส้นB8000? วิธีช้าเป็นmov [es:di], eaxร้านด้วยMTRRสำหรับภูมิภาคชุด UC? (การทดสอบทดลองบนแล็ปท็อป Kaby Lake iGPU หนึ่งตัวบ่งชี้ว่า clflushopt บน WC นั้นมีความเร็วเท่ากับ UC สำหรับหน่วยความจำ VGA โดยประมาณ แต่หากไม่มี clflushopt การจัดmovเก็บไปยังหน่วยความจำ WC จะไม่ออกจาก CPU และไม่อัปเดตหน้าจอเลย .) หากไม่ใช่ SMI สำหรับทุกร้านมีวิธีใดที่จะประมาณค่าใช้จ่ายนี้สำหรับหน่วยความจำ WB ในพื้นที่ผู้ใช้สำหรับการทดลองประสิทธิภาพโดยไม่ต้องบูตเครื่องใหม่ในโหมดจริงหรือไม่ (เช่นการใช้หน้า BSS เป็น framebuffer แบบหลอกที่ไม่ได้แสดงที่ใดก็ได้) ตัวอักษรที่สอดคล้องกันปรากฏขึ้นบนหน้าจอในการรีเฟรชครั้งต่อไป …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.