• 検索結果がありません。

2007 5 2 年 月 日(水) 基礎実験1  ・アセンブラ実習 第 回 UNIX 8

N/A
N/A
Protected

Academic year: 2021

シェア "2007 5 2 年 月 日(水) 基礎実験1  ・アセンブラ実習 第 回 UNIX 8"

Copied!
3
0
0

読み込み中.... (全文を見る)

全文

(1)

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

2007年5月2日(水)

課題 下記のプログラムは,256バイトの大きさを持つキューを作り,それに 1バイトずつデータ を書き込むプログラムである.このプログラムについて,以下の設問に答えよ.

(1)プログラムのフローチャートを作成せよ.

(2)プログラム中の(あ)~(う)の箇所の処理内容(意味)を説明せよ.

(3)プログラム中の(え)には,レジスタ復帰の処理が必要である.完成させよ.

(4)このプログラムをemacsで入力し,ステップ実行で動作を確認せよ.

1 .org 0x0000 2 .dc.l 0x5000 3 .dc.l Start 4 .org 0x0400

******************************

** メインルーチン

** a0:書き込むデータのアドレス

** d4:書き込み回数

******************************

5 Start:

6 jsr Init_Q /* キューの初期化処理 */

7 lea.l Data_to_Que, %a0

8 move.l #257, %d4

9 Loop1:

10 subq.w #1, %d4

11 bcs End_program

12 jsr In_Q /* 書き込み処理 */

13 bra Loop1

14 End_program:

15 .dc.w 0x4848 /* プログラムの終了 */

16 stop #0

**********************

** キューの初期化処理

**********************

17 .section .text 18 .even

1

(2)

19 Init_Q:

20 lea.l BF_START, %a2 21 move.l %a2, PUT_PTR 22 move.l %a2, GET_PTR 23 move.b #0xff, PUT_FLG 24 move.b #0x00, GET_FLG

25 rts

***********************************

** In_Q キューへのデータ書き込み

** a0: 書き込むデータのアドレス

** d0: 結果(00:失敗, 00以外:成功)

***********************************

26 .section .text 27 .even

28 In_Q:

29 jsr PUT_BUF /* キューへの書き込み */

30 rts

****************************************

** PUT_BUF

** a0: 書き込むデータのアドレス

** d0: 結果(00:失敗, 00以外:成功)

****************************************

31 .section .text 32 .even

33 PUT_BUF:

34 movem.l %d2/%a1-%a3,-(%sp)

35 move.b PUT_FLG, %d2 36 cmp.b #0x00, %d2 37 beq PUT_BUF_Finish 38 movea.l PUT_PTR, %a1 39 move.b (%a0),(%a1)+

40 lea.l BF_END, %a3 41 cmpa.l %a3, %a1

42 bls PUT_BUF_STEP1

43 lea.l BF_START, %a2 44 movea.l %a2,%a1 45 PUT_BUF_STEP1:

46 move.l %a1,PUT_PTR 47 cmpa.l GET_PTR,%a1

2

(あ)

(い)

(3)

48 bne PUT_BUF_STEP2 49 move.b #0x00,PUT_FLG 50 PUT_BUF_STEP2:

51 move.b #0xff, GET_FLG 52 move.b PUT_FLG, %d0 53 PUT_BUF_Finish:

54 movem.l (%sp)+, %d2/%a1-%a3

55 rts

******************************

** キュー用のメモリ領域確保

******************************

56 .section .data 57 .even

58 .equ B_SIZE, 256 59 BF_START:

60 ds.b B_SIZE-1

61 BF_END:

62 ds.b 1

63 PUT_PTR:

64 ds.l 1

65 GET_PTR:

66 ds.l 1

67 PUT_FLG:

68 ds.b 1

69 GET_FLG:

70 ds.b 1

******************************

** 書き込むデータ(サンプル)

******************************

71 .section .data 72 .even

73 Data_to_Que:

74 .ascii "ABC"

今日の実習はここで終りです.

3

(う)

(え)

(4)

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

4

参照

関連したドキュメント

3:80%以上 2:50%以上 1:50%未満 0:実施無し 3:毎月実施. 2:四半期に1回以上 1:年1回以上

<第2次> 2022年 2月 8 日(火)~ 2月 15日(火)

SuperLig® 樹脂は様々な用途に合うよう開発された。 本件で適用される 2 樹脂( SuperLig®605 は Sr 、 SuperLig®644 は Cs 除去用)は Hanford Tank

第 1 四半期は、海外エキスパートが講師となり「 SOER2003-2 米国デービス ベッセ RPV 上蓋損傷」について学習会を実施、計 199 名が参加(福島第一: 5 月 19 日( 37 名)、福島第二:

■実 施 日: 2014年5月~2017年3月. ■実施場所:

第1回 平成27年6月11日 第2回 平成28年4月26日 第3回 平成28年6月24日 第4回 平成28年8月29日

日時:2013 年 8 月 21 日(水)16:00~17:00 場所:日本エネルギー経済研究所 会議室 参加者:子ども議員 3 名 実行委員

第1回目 2015年6月~9月 第2回目 2016年5月~9月 第3回目 2017年5月~9月.