| 秘密小左 ![]() | 想請教組語寫法 這學期有一門課程是組合語言 版子上的前輩有沒有人學過的呢? ex: Z=X+Y 要從鍵盤上keyin兩個有號數(-128 ~ 127) 然後在螢幕上顯示出 X、Y、Z三個有號數的 2進位、八進位、16進位 用巨集寫的話應該會比較好 只是我卡在16進位的巨集 比方說出現10→應該要顯示A 可是我無法順利寫出程式 有前輩可以教敎我嗎? ...謝謝 ^^ 我用的是NASM ...先謝謝前來指教的前輩 |
| 回覆 |
| 全宇宙最閒的人 ![]() | 回覆: 想請教組語寫法 組語上的"巨集"跟一般常碰到是不一樣的,雖說定義一樣。 ASM上的巨集,可稱之為"自創指令集",把多個指令包起來,定個假指令名,而在程式中就使用這假指令,在組譯後這些"自創指令集"會被展開。 而你卡的地方,用查表法是最簡單的,如何寫見 http://blog.xuite.net/asccpu/CPU/112853 這。 |
| 回覆 |
| 秘密小左 ![]() | 回覆: 想請教組語寫法 自己試了很久...都還是弄不出來 就想說弄簡單一點 先把兩數相加 再分別表示2、8、16進位的和(先打出顯示2進位就好,code頗長) 若兩數相加為10 螢幕只會顯示出→1010 我必須怎麼改,才會顯示"00001010" ORG 0100H JMP start msg DB 'keyin a number:', '$' s TIMES 80 DB ' ' msg2 DB 'sum(2)=','$' msg8 DB 'sum(8)=','$' msg16 DB 'sum(16)=','$' x DW 0 y DW 0 z DW 0 a DW 2 b DW 8 c DW 16 msgsum DB 13, 10, 'sum=' sumstr DB ' ', '$' %include "C:\howasm\mymacro\readstr.mac" %include "C:\howasm\mymacro\strtoi.mac" %include "C:\howasm\mymacro\itostr.mac" %include "C:\howasm\mymacro\dispi.mac" %include "C:\howasm\mymacro\newline.mac" start: MOV DX, msg MOV AH, 09H INT 21H readstr s strtoi s, '$', x newline MOV DX, msg MOV AH, 09H INT 21H readstr s strtoi s, '$', y MOV AX, WORD [x] ADD AX, WORD [y] MOV WORD [z], AX itostr z, sumstr, '$' MOV DX, msgsum MOV AH, 09H INT 21H newline MOV DX, msg2 MOV AH, 09H INT 21H MOV DX, 0 MOV AX, WORD [z] MOV CX, 0 loop1: DIV WORD [a] PUSH DX INC CX MOV DX, 0 CMP AX, 0 JE next1 JMP loop1 next1: POP DX ADD DL,30H MOV AH, 02H INT 21H LOOP next1 newline MOV AX, 4c00H INT 21H |
| 回覆 |
| 全宇宙最閒的人 ![]() | 回覆: 想請教組語寫法 看了半天...... 1.程式起頭寫法錯誤,那是寫 COM檔的方式,不是EXE檔,就算是寫COM檔,程式結束的方式也錯。所以上述程式應該組譯不過,就算過了也RUN不了。 2.貼ASM源碼,不能像貼高階語言程式一樣,在ASM程式中,你要完整貼出,包含所用的巨集部份,上述程式沒有,沒法得知這些部份是如何運作的。 3.如果沒猜錯,你對ASCII及BCD碼認識不深。 4.除法部份你可以考慮寫成副程式,如此8,16進制都可使用。 5.對初學者而言多畫流程圖及DEBUG。流程圖把你的想法轉成細步動作,再以此選合用的指令來寫,這是與高階不同的。 |
| 回覆 |
| 恭喜發財 | 回覆: 想請教組語寫法 網友反應,本篇討論應該放在軟體討論區比較恰當, 故移動,請有興趣的網友繼續討論!! |
| 回覆 |
| 散人 ![]() | 回覆: 想請教組語寫法 抱歉!我不是來回答問題的,真是很抱歉,只是來憑弔老朋友的..... 真是令人懷念的簡短英文機器語言啊!尤其是那個INT 21.... |
| 回覆 |
| |
| XML | RSS 2.0 | RSS |
本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。