16-bit

    1熱度

    1回答

    我在彙編中編寫啓動加載程序,它似乎在qemu,bochs和virtualbox上正常工作。但是,它並沒有在真正的硬件上加載內核(看來)。 引導加載程序通過將字符寫入視頻內存(用於調試)開始,然後從驅動器讀取扇區2並遠程跳轉到內核。內核然後將一些字符寫入視頻內存。 在一臺真機上,我從屏幕上的引導程序看到角色,並在那裏掛起(閃爍的插入符號)。 我試圖將DS,ES,SI設置爲零,而且我還設置了一個堆棧段

    0熱度

    1回答

    當我運行代碼: ;-------------------MACRO----------------- println MACRO info push ax push dx mov ah, 09h mov dx, offset info int 21h ;print new line mov dl, 10 mov

    0熱度

    1回答

    我想寫一個程序,從鍵盤讀取3個字符串,然後顯示2個字符串以小寫字母和最後一個以大寫字母。以下是我到目前爲止的內容:我可以讀取字符串,但它會將所有內容都轉換爲大寫。無論如何只轉換最後一個字符串?在此先感謝 .MODEL SMALL .DATA MSG DB 0DH,0AH, 'ENTER A STRING: $' MSG2 DB 0DH,0AH, ' YOUR STRING I

    2熱度

    2回答

    嗯,這顯然是一個初學者的問題,但這是我第一次嘗試製作操作系統在C(其實,我幾乎是全新的C ..我習慣了asm)所以,爲什麼這是無效的?據我所知,在Cpointer只是一個uint16_t用於指向內存中的某個區域,權利(或uint32_t,這就是爲什麼它不工作)? 我做了以下內核(「我已經做了一個引導程序和所有組件加載生成KERNEL.BIN文件): kernel.c void printf(cha

    0熱度

    1回答

    我試圖解決今天上午的Codeforces問題分區2C:http://codeforces.com/contest/716/problem/C 此問題有可能循環高達100,000次,因此這裏的參數可能高達100,000。循環似乎打破100,000路過的時候(甚至更早),i被聲明爲int類型: public void solve(int a) { double x = 2;

    1熱度

    1回答

    我在自舉程序結束時設置了4k堆棧空間。之後,我讀取了16個扇區(= 8k)的代碼到地址0x2000:0x0000。這是我操作系統的核心。我分支給它。 問題是,我如何設置8k堆棧空間從內核結束開始? bootloader.asm ; bootloaders are always loaded to offset 0x7c00. ; so, define base to 7c00h. or

    2熱度

    2回答

    這個很簡單。 printf("%lu\n", (unsigned long)(320 * 200)); 該行代碼打印出「4294965760」。這絕對不等於360 * 200.它有什麼問題? 我在16位中型內存模型中使用了Digital Mars C編譯器。

    2熱度

    2回答

    我在16位的二進制記數法兩個浮點數,當我試圖加入他們,我偶然發現一個問題: A = 0 11110 1111000000 B = 0 11010 1101110000 現在A + B就是我想要做的,但這是我的問題;我如何以16位格式表示總和? A = 63488 B = 3808 A + B = 67296 可裝配到16位在IEEE 754符號是65504,所表示的最大十進制數: MAX

    3熱度

    2回答

    我正在爲MS-DOS編寫一些小工具。現在我正在編寫一個Shutdown.com,就像Windows XP和更高版本一樣。我已經寫完整個代碼,現在我只需要從DOS傳遞參數。 我需要傳遞參數「-r」重新啓動,「-s」關閉。 我該怎麼辦? 我正在使用TASM(Turbo Assembler 4.1)在Windows 98上進行鏈接和編譯。我正在尋找一個非常簡單的方法來做到這一點,如果可能的話,仍然是一個