Sub 密です()
'セルA1からK11まで「人」で埋めつくして密にする
Range("A1:K11") = "人"
End Sub
● ボタン「ソーシャルディスタンス」に登録するコード
Sub ソーシャルディスタンス()
' カウンタ変数iとjを宣言する
Dim i As Integer, j As Integer
' シートをクリアする
Cells.Clear
'セルA1を選択する
Range("A1").Select
'外側のループでiを0から10まで2ずつ増やす
For i = 0 To 10 Step 2
'内側のループでjを0から10まで2ずつ増やす
For j = 0 To 10 Step 2
'セルA1を基準として、下にi、右にj分移動したセルをアクティブにして「人」と言う字を入れる
ActiveCell.Offset(i, j).Value = "人"
'内側のループjを進める
Next j
' 外側のループiを進める
Next i
End Sub
'i= 0で固定して内側のループのみを動かす
Sub ソーシャルディスタンス()
' カウンタ変数iとjを宣言する
Dim i As Integer, j As Integer
' シートをクリアする
Cells.Clear
'セルA1を選択する
Range("A1").Select
'外側のループでiを0から10まで2ずつ増やす
'For i = 0 To 10 Step 2 ←コメントアウト
'内側のループでjを0から10まで2ずつ増やす
For j = 0 To 10 Step 2
'セルA1を基準として、下にi、右にj分移動したセルをアクティブにして「人」と言う字を入れる
ActiveCell.Offset(0, j).Value = "人" ' ← iを0にする
'内側のループjを進める
Next j
' 外側のループiを進める
'Next i ←コメントアウト
End Sub
TEST START
RPUSH
OUT MOJI,LEN
;GR1にMOJIの先頭アドレスを指定
;GR2に文字数を格納
;大文字に変換するサブルーチンUPPERを呼び出す
OUT MOJI,LEN
RPOP
RET
MOJI DC 'Social Distance'
LEN DC 15
;大文字に変換するサブルーチンUPPER
UPPER RPUSH
;<<大文字判定ループ>>
;GR3に配列MOJIの文字を読み込む
;その文字の文字コードを小文字の「a」と比較
;文字コードがaより小さかったらSKIPへ分岐
;小文字の「z」と比較
;文字コードがzより大きかったらSKIPへ分岐
;文字コードを20引いて「小文字 → 大文字」に変換
;上で大文字にした文字を配列MOJIに格納
;配列MOJIを1つ先に進める
;ループカウンタにしているGR2から1を引く
;ループカウンタがプラスであればLOOPへ
RPOP
RET
END
TEST START
RPUSH
OUT NAME,LEN ;OUT命令で「Enter your favorite name(推しの名前を入力)」を出力
IN OSHI,LENO ;IN命令で推しの名前を入力
OUT OSHI,LENO ;入力した名前を出力
LAD GR1,5 ;GR1に5を読み込む(GR1をループカウンタに使用)
;<<ここからループ>>
LOOP LD GR2,='0' ;GR2に'0'を読み込む
ADDL GR2,GR1 ;出力する為、文字コード'0'(0030)が入っているGR2にGR1を加算
ST GR2,DAYS ;ST命令でGR2の日数をDAYSに格納する
OUT DAYS,LEND ;OUT命令でDAYSに入っている日数を出力
SUBL GR1,=1 ;GR1をデクリメント
CPL GR1,=1 ;GR1の値と1を比較
JPL LOOP ;GR1が1より大きい間はループを繰り返す
;<<ループここまで>>
OUT DAY1,LEND1 ;OUT命令であと1日と出力
OUT MSG,LENM ;OUT命令で推しに「DAISUKI!!」と出力
RPOP
RET
NAME DC 'Enter your favorite name!';文字列「Enter your favorite name!」
LEN DC 25 ;その文字数
OSHI DS 256 ;推しの名前の領域を確保
LENO DS 256 ;推しの名前の文字数の領域を確保
DAYS DS 1 ;日数の領域を確保
LEND DC 7 ;日数の文字数
DAYCOUNT DC 'days.' ;出力する日数の単位
DAY1 DC '1-DAY!! TOMORROW!!' ;あと1日の文字列
LEND1 DC 18 ;あと1日の文字数
MSG DC 'DAISUKI!!' ;文字列「DAISUKI!!」
LENM DC 9 ;その文字数
END
TEST START
RPUSH
;OUT命令で「Enter your favorite name(推しの名前を入力)」を出力
;IN命令で推しの名前を入力
;入力した名前を出力
;GR1に5を読み込む(GR1をループカウンタに使用)
;<<ここからループ>>
;GR2に'0'を読み込む
;出力する為、文字コード'0'(0030)が入っているGR2にGR1を加算
;ST命令でGR2の日数をDAYSに格納する
;OUT命令でDAYSに入っている日数を出力
;GR1をデクリメント
;GR1の値と1を比較
;GR1が1より大きい間はループを繰り返す
;<<ループここまで>>
;OUT命令であと1日と出力
;OUT命令で推しに「DAISUKI!!」と出力
RPOP
RET
NAME DC 'Enter your favorite name!';文字列「Enter your favorite name!」
LEN DC 25 ;その文字数
OSHI DS 256 ;推しの名前の領域を確保
LENO DS 256 ;推しの名前の文字数の領域を確保
DAYS DS 1 ;日数の領域を確保
LEND DC 7 ;日数の文字数
DAYCOUNT DC 'days.' ;出力する日数の単位
DAY1 DC '1-DAY!! TOMORROW!!' ;あと1日の文字列
LEND1 DC 18 ;あと1日の文字数
MSG DC 'DAISUKI!!' ;文字列「DAISUKI!!」
LENM DC 9 ;その文字数
END
TEST START
RPUSH
IN LOCATE,LEN ;観光地の番号を入力する
LD GR1,LOCATE ;GR1に入力した観光地の番号を読み込む
CPL GR1,='1' ;GR1と番号'1'を比較
JNZ L2 ;等しくなければL2に分岐する
OUT LOCATE1,LEN1 ;1であれば「YOKOHAMA」と出力
JUMP FIN ;ラベルFINに分岐
L2 CPL GR1,='2' ;ラベルL2ではGR1と'2'を比較する
JNZ L3 ;等しくなければL3に分岐する
OUT LOCATE2,LEN2 ;2であれば「SKYTREE」をと出力
JUMP FIN ;ラベルFINに分岐
L3 CPL GR1,='3' ;ラベルL3ではGR1と'3'を比較する
JNZ L4 ;等しくなければL4に分岐する
OUT LOCATE3,LEN3 ;3であれば「ONJYUKU」と出力
JUMP FIN ;ラベルFINに分岐
L4 CPL GR1,='4' ;ラベルL4ではGR1と'4'を比較する
JNZ OTHER ;等しくなければOTHERに分岐する
OUT LOCATE4,LEN4 ;4であれば「ODAIBA」と出力
JUMP FIN ;ラベルFINに分岐
OTHER OUT NOTHING,LEN5 ;ラベルOTHERでは文字列NOTHINGと文字数LEN5で出力
FIN RPOP
RET
LOCATE DS 256 ;場所の領域を確保
LEN DC 1 ;文字数1文字
LOCATE1 DC 'YOKOHAMA' ;最初の場所横浜
LEN1 DC 8 ;横浜の文字数
LOCATE2 DC 'SKYTREE' ;2番目の場所スカイツリー
LEN2 DC 7 ;スカイツリーの文字数
LOCATE3 DC 'ONJYUKU' ;3番目の場所御宿
LEN3 DC 7 ;御宿の文字数
LOCATE4 DC 'ODAIBA' ;4番目の場所お台場
LEN4 DC 6 ;お台場の文字数
NOTHING DC 'PREASE ENTER 1-4' ;1から4までを入力するようにメッセージ
LEN5 DC 16 ;その他の場合の文字数
END
TEST START
RPUSH
;観光地の番号を入力する
;GR1に入力した観光地の番号を読み込む
;GR1と番号'1'を比較
;等しくなければL2に分岐する
;1であれば「YOKOHAMA」と出力
;ラベルFINに分岐
;ラベルL2ではGR1と'2'を比較する
;等しくなければL3に分岐する
;2であれば「SKYTREE」をと出力
;ラベルFINに分岐
;ラベルL3ではGR1と'3'を比較する
;等しくなければL4に分岐する
;3であれば「ONJYUKU」と出力
;ラベルFINに分岐
;ラベルL4ではGR1と'4'を比較する
;等しくなければOTHERに分岐する
;4であれば「ODAIBA」と出力
;ラベルFINに分岐
;ラベルOTHERでは文字列NOTHINGと文字数LEN5で出力
FIN RPOP
RET
LOCATE DS 256 ;場所の領域を確保
LEN DC 1 ;文字数1文字
LOCATE1 DC 'YOKOHAMA' ;最初の場所横浜
LEN1 DC 8 ;横浜の文字数
LOCATE2 DC 'SKYTREE' ;2番目の場所スカイツリー
LEN2 DC 7 ;スカイツリーの文字数
LOCATE3 DC 'ONJYUKU' ;3番目の場所御宿
LEN3 DC 7 ;御宿の文字数
LOCATE4 DC 'ODAIBA' ;4番目の場所お台場
LEN4 DC 6 ;お台場の文字数
NOTHING DC 'PREASE ENTER 1-4' ;1から4までを入力するようにメッセージ
LEN5 DC 16 ;その他の場合の文字数
END