基礎実験1 UNIX・アセンブラ実習 第3回

2007416 ()

実習内容

2回実習にて,アセンブラとエミュレータの使い方を勉強しました.今回はアセンブラソフト(m68k-as)の段階でエラーメッセージが出てくることを体験します.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


図1.今日の実習の流れ

 

6. バグの発見とデバッグ

今度は,ファイルsub.s の中身をemacsなどのコマンドで確認してください。

 


$ emacs sub.s & Enterキー>

 

/*     sample program sub.s               */

/*     間違った箇所が3つあります。    */

/*     正しくプログラムが動くように修正せよ */

 

.org   0x0000

.dc.l  0x5000

.dc.l  start

 

.org   0x0400

start 

       move.w  #9,a    /* a番地に9を格納 */

       move.w  #4,b    /* b番地に4を格納 */

       move.w  a, %d0  /* a番地の値をレジス夕d0に格納 */

       sub.w   b, %d0  /* b番地の値をレジスタd0から引く */

       move.w  %do,c   /* レジスタd0の値をc番地に格納 */ 

       .dc.w 0x4848       /* BSVC break 相当 */

       stop    #0      /* 終了 */

a:     .ds,w   1      

b:     .ds.w   1

c:     .ds.w   1

 

このプログラム sub.s a番地に9、b番地に4を格納して、9から4を引いた値をc番地に格納することを目的としたプログラムですが,バグ(Bug:プログラムの誤り)の発見とデバッグ(Debug:バグを取り除く)を練習するために,わざとバグを入れています.

add.sをアセンブルしたときと同様に、m68k-asコマンドを使って,アセンブラソースプログラムファイルsub.sをアセンブルしましょう。Terminal上で次のコマンドを実行してみましょう。

 


$ m68k-as sub.s Enterキー>

 

sub.s中に文法的な間違いがあるので,エラーメッセージが出ます(下図)。エラーメッセージを手がかりにemacssub.sファイルを修正しましょう。

このエラーメッセージ中の「sub.s:10・・・」,「sub.s:15・・・」とは、10行目と15行目で文法的な誤りがあるということを表しています。これを手がかりに,プログラムの該当箇所付近の間違いを確かめて、誤りを修正しましょう(自分で見つける)。

修正が出来たと思ったら、sub.sを上書き保存して、Terminal上で再度アセンブル命令(m68k-as)を実行しましょう。この一連の作業をアセンブルエラーがなくなるまで繰り返します(この一連の手順を理解しておかないと、自分でレポート課題を作成するときに困ります。しっかり理解しましょう)

うまく,アセンブルが成功すると,ディレクトリ中に次のようなファイルが生成されています.

 

      % ls  Enterキー>

      sub.LIS      sub.abs      sub.map      sub.s

 

これ以降は、前回の足し算のプログラムを実行した時と同様に、エミュレータm68k-emuを起動して,メモリやレジスタを見ながらプログラムが意図した通りに動作することを確認しましょう。

 

 

 

 

 

 


課題1

sub.s を正しく動くように修正し,実行結果を報告しなさい

(1)訂正箇所を3つ示しなさい.

(2)ラベルa,b,cのメモリアドレスを報告しなさい.

(3)プログラム実行から終了までのPC(プログラムカウンタ), d0 (データレジスタ0), ラベルa,b,cの中身の変化を観察し,表にして報告しなさい.

 

7. emacs のより詳しい使い方

emacs がおかしくなったとき

とにかく Ctrl-g を数回押す。これで直ることが多い。

 

削除

Del キー: 1文字削除

Ctrl-k カーソル位置から行末までを削除

 

カット&ペースト

 カット&ペーストはテキストのある部分を他の部分にコピーしたいときに便利です。

Ctrl-スペース: ``マーク''のセット

Ctrl-w 前に指定したマークから今のカーソルの位置までをカット

Esc-w 前に指定したマークから今のカーソルの位置までをコピー

Ctrl-y カットされたものを現在の位置に取り込む

 

次の手順でカット&ペースとしてみましょう。

適当な場所で ``Ctrl+スペース'' を1回押す。

カーソルを動かす。

“Ctrl-w” を1回押すと、テキストの部分が消える。

“Ctrl-y” を1回押すと、テキストが元に戻る。

カーソルを動かす。

“Ctrl-y” を押すと、先ほど消えたテキストの部分が挿入される。

 

ウインドウ操作

 複数のファイルを同時に扱うとき、emacs のウインドウが複数ある方が扱いやすい。

'Files' メニュー、 'Make New Frame' 新しい emacs ウインドウのオープン

 

サーチ

サーチは、テキストの中からある文字を探し出す機能です。

 

Ctrl-s:順方向サーチ(今のカーソル位置より後)

Ctrl-r:逆方向サーチ(今のカーソル位置より前)

 

アンドウ

emacs では、操作を誤ったときでも今までの操作を取り消し(アンドウ)して、やり直すことができる。アンドウは繰り返し行うことができる。

Ctrl-/:アンドウ

 

今日の実習はここまでです。

 

参考Webページ: http://www.db.is.kyushu-u.ac.jp/kaneko/as/index.html