想請教組語寫法 - PCZONE 討論區

返回   PCZONE 討論區 > ▲ -- 電 腦 軟 體 討 論 區 > -- 其 他 軟 體 討 論 版


PCZONE 討論區



通知

-- 其 他 軟 體 討 論 版 包括磁碟或檔案管理工具、掃毒軟體、解壓縮軟體、遠端遙控軟體、備份軟體、傳真軟體、手寫或語音等各種軟體使用經驗討論

秘密小左
想請教組語寫法
這學期有一門課程是組合語言
版子上的前輩有沒有人學過的呢?

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。流程圖把你的想法轉成細步動作,再以此選合用的指令來寫,這是與高階不同的。
回覆
fw3
恭喜發財
回覆: 想請教組語寫法
網友反應,本篇討論應該放在軟體討論區比較恰當,
故移動,請有興趣的網友繼續討論!!
回覆
散人
回覆: 想請教組語寫法
抱歉!我不是來回答問題的,真是很抱歉,只是來憑弔老朋友的.....
真是令人懷念的簡短英文機器語言啊!尤其是那個INT 21....

回覆







 XML   RSS 2.0   RSS 
本站使用 vBulletin 合法版權程式
站務信箱 : [email protected]

本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。