這學期有一門課程是組合語言
版子上的前輩有沒有人學過的呢?
ex:
Z=X+Y
要從鍵盤上keyin兩個有號數(-128 ~ 127)
然後在螢幕上顯示出
X、Y、Z三個有號數的
2進位、八進位、16進位
用巨集寫的話應該會比較好
只是我卡在16進位的巨集
比方說出現10→應該要顯示A
可是我無法順利寫出程式
有前輩可以教敎我嗎?
...謝謝 ^^
我用的是NASM
...先謝謝前來指教的前輩
這學期有一門課程是組合語言
版子上的前輩有沒有人學過的呢?
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....
========================================
用智慧處理事情,用慈悲對待他人。(節錄 聖嚴法師與人文對話一書內容)
書籤