projects
/
YACASL2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
PBM作成アセンブルプログラムを修正
[YACASL2.git]
/
as
/
casl2lib
/
abs.casl
diff --git
a/as/casl2lib/abs.casl
b/as/casl2lib/abs.casl
index
35aa20d
..
6f03a67
100644
(file)
--- a/
as/casl2lib/abs.casl
+++ b/
as/casl2lib/abs.casl
@@
-1,16
+1,16
@@
-;;; GR1ã
\82
\92
ç
µ¶å¯¾å
\80
¤ã
\81
«å¤
\89
æ
\8f
\9b
ã
\81
\99
ã
\82
\8b
-;;; 入力 GR1:
-32768〜
32767の整数
-;;; 出力 GR1:入力された整数の絶対値
-;;; OF:入力されたGR1が-32768の場合、1
-;;; SF:入力されたGR1が負数(-32767〜-1)の場合、1
+;;; GR1ã
\82
\92
ç
¬¦å
\8f
·ä»
\98
ã
\81
\8d
æ
\95
´æ
\95
°ã
\81
¨ã
\81
¿ã
\81
ªã
\81
\97
ã
\80
\81
絶対å
\80
¤ã
\81
«å¤
\89
æ
\8f
\9b
+;;; 入力 GR1:
-32768から
32767の整数
+;;; 出力 GR1:
入力された整数の絶対値
+;;; OF:
入力されたGR1が-32768の場合、1
+;;; SF:
入力されたGR1が負数(-32767〜-1)の場合、1
ABS START
ABS START
- AND GR1,GR1
- JPL FIN
- JZE FIN
- XOR GR1,ALLON
- ADDA GR1,ONE
- JOV FIN
- CPL GR1,ALLON
+ AND GR1,GR1
; GR1が0以上の場合は、FINへジャンプ
+ JPL FIN
; ↓
+ JZE FIN
; ↓
+ XOR GR1,ALLON
; GR1のビットを反転
+ ADDA GR1,ONE
; GR1に1を追加
+ JOV FIN
; 足し算でオーバーフローの場合は、OF:1を保持してFINへジャンプ
+ CPL GR1,ALLON
; SF:1を設定
FIN RET
ONE DC 1
ALLON DC #FFFF
FIN RET
ONE DC 1
ALLON DC #FFFF