1 練習問題

問題と解答のプログラムを示す。実行順序は、プログラムの注釈欄の数字で示 している。

1.1 繰り返し処理

[問題 1]    最小値
	EX1_1_1 START
	        LAD    GR2,0          ;1
	        LD     GR1,KOSUU      ;2
	        LAD    GR1,-1,GR1     ;3
	        LD     GR0,DATA       ;4
	        ST     GR0,MIN        ;5
	LOOP    LAD    GR2,1,GR2      ;6,13---
	        LD     GR0,DATA,GR2   ;7,14---
	        CPA    GR0,MIN        ;8,15---
	        JPL    SKIP           ;9,16---
	        ST     GR0,MIN        ;10   ---
	SKIP    CPA    GR1,GR2        ;11,17---
	        JPL    LOOP           ;12,18---
	        RET                   ;SAIGO
	DATA    DC     54,34,82,49,99,37
	KOSUU   DC     6
	MIN     DS     1
	END
 
[問題 2]    合計
	EX1_1_2 START  
	        LAD    GR3,0         ;1
	        LAD    GR2,-1        ;2
	        LD     GR1,KOSUU     ;3
	        LAD    GR1,-1,GR1    ;4
	LOOP    LAD    GR2,1,GR2     ;5,10,---
	        LD     GR0,DATA,GR2  ;6,11,---
	        ADDA   GR3,GR0       ;7,12,---
	        CPA    GR1,GR2       ;8,13,---
	        JPL    LOOP          ;9,14,---
	        ST     GR3,SUM       ;SAIGO-1
	        RET                  ;SAIGO
	DATA    DC     54,34,82,49,99,37
	KOSUU   DC     6
	SUM     DS     1
	        END
 

1.2 繰り返し処理とサブルーチン

[問題 1]    最小値
	;======================================
	;   MAINROUTINE
	;======================================
	EX1_2_1 START
	        LD     GR1,KOSUU     ;1
	        CALL   SAISHO        ;2
	        RET                  ;3
	;
	;======================================
	;   DATA REGION
	;======================================
	DATA    DC     54,34,82,49,99,37
	KOSUU   DC     6
	MIN     DS     1
	;
	;======================================
	;   SUBROUTINE SAISHOU
	;======================================
	SAISHO  LAD    GR1,-1,GR1    ;(1)
	        LD     GR0,DATA      ;(2)
	        ST     GR0,MIN       ;(3)
	LOOP    LAD    GR2,1,GR2     ;(4),(11)---
	        LD     GR0,DATA,GR2  ;(5),(12)---
	        CPA    GR0,MIN       ;(6),(13)---
	        JPL    SKIP          ;(7),(14)---
	        ST     GR0,MIN       ;(8)   ---
	SKIP    CPA    GR1,GR2       ;(9),(15)---
	        JPL    LOOP          ;(10),(16)---
	        RET                  ;SAIGO
	        END
 
[問題 2]    合計
	;======================================
	;   MAINROUTINE
	;======================================
	EX1_1_2 START
	        LD     GR1,KOSUU     ;1
	        CALL   GOUKE         ;2
	        RET                  ;3
	;
	;======================================
	;   DATA REGION
	;======================================
	DATA    DC     54,34,82,49,99,37
	KOSUU   DC     6
	SUM     DS     1
	;
	;======================================
	;   SUBROUTINE GOUKEI
	;======================================
	GOUKE   LAD    GR3,0         ;(1)
	        LAD    GR2,-1        ;(2)
	        LAD    GR1,-1,GR1    ;(3)
	LOOP    LAD    GR2,1,GR2     ;(4),(9),---
	        LD     GR0,DATA,GR2  ;(5),(10),---
	        ADDA   GR3,GR0       ;(6),(11),---
	        CPA    GR1,GR2       ;(7),(12),---
	        JPL    LOOP          ;(8),(13),---
	        ST     GR3,SUM       ;SAIGO-1
	        RET                  ;SAIGO
	        END
 

1.3 アドレスの受け渡し

[問題 1]    最小値・最大値
	;======================================
	;   MAINROUTINE
	;======================================
	EX1_2_1 START
	        LD     GR1,KOSUU  ;1
	        LAD    GR2,DATA   ;2
	        LAD    GR3,MIN    ;3
	        LAD    GR4,MAX    ;4
	        CALL   MINMAX     ;5
	        RET               ;6
	;
	;======================================
	;   DATA REGION
	;======================================
	DATA    DC     54,34,82,49,99,37
	KOSUU   DC     6
	MIN     DS     1
	MAX     DS     1
	;
	;======================================
	;   SUBROUTINE SAISHOU SAIDAI
	;======================================
	MINMAX  PUSH   0,GR1
	        PUSH   0,GR2
	        PUSH   0,GR3
	        PUSH   0,GR4
	        PUSH   0,GR5
	        PUSH   0,GR6
	        LAD    GR5,0
	        LAD    GR1,-1,GR1
	        LD     GR6,0,GR2
	        ST     GR6,0,GR3
	        ST     GR6,0,GR4
	LOOP    LAD    GR2,1,GR2
	        LAD    GR5,1,GR5
	        LD     GR6,0,GR2
	        CPA    GR6,0,GR3
	        JPL    FMAX
	        ST     GR6,0,GR3
	FMAX    CPA    GR6,0,GR4
	        JMI    SKIP
	        ST     GR6,0,GR4
	SKIP    CPA    GR1,GR5
	        JPL    LOOP
	        POP    GR6
	        POP    GR5
	        POP    GR4
	        POP    GR3
	        POP    GR2
	        POP    GR1
	        RET
	        END
 
[問題 2]    合計
	;======================================
	;   MAINROUTINE
	;======================================
	EX1_1_2 START
	        LD     GR1,KOSUU  ;1
	        LAD    GR2,DATA   ;2
	        LAD    GR3,SUM    ;3
	        CALL   GOUKE      ;4
	        RET               ;5
	;
	;======================================
	;   DATA REGION
	;======================================
	DATA    DC     54,34,82,49,99,37
	KOSUU   DC     6
	SUM     DS     1
	;
	;======================================
	;   SUBROUTINE GOUKEI
	;======================================
	GOUKE   PUSH   0,GR1
	        PUSH   0,GR2
	        PUSH   0,GR3
	        PUSH   0,GR4
	        PUSH   0,GR5
	        PUSH   0,GR6
	;
	        LAD    GR6,0
	        LAD    GR4,0
	        LAD    GR2,-1,GR2
	;
	LOOP    LAD    GR4,1,GR4
	        LAD    GR2,1,GR2
	        LD     GR5,0,GR2
	        ADDA   GR6,GR5
	        CPA    GR1,GR4	
	        JPL    LOOP
	        ST     GR6,0,GR3
	;
	        POP    GR6
	        POP    GR5
	        POP    GR4
	        POP    GR3
	        POP    GR2
	        POP    GR1
	        RET
	        END
 

ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成19年8月21日


no counter