LEDは、7,8のデジタル表示数がフル明るいを指定点灯8アセンブリ言語、Quanmieは左右マーキー式にスイッチ制御8255A及び図4に示すように、左から右へ点灯によって達成しました

最後に、コードを改善します:

	TINY .MODEL	
	.STACK 100
	。データ
DB 11111110B ledshow;変数「変数名データ型データ」によって定義されたデータ・セグメント、バイトDBとして
7 DBの07H	
ゼロのDB 00H
		
	。コード
START:A EQU 0270H;デジタルポートアドレス
		B EQU 0271H; 0-1スイッチポートアドレス
		C EQU 0272H;制御デジタル表示内容 
		
		現在のプログラムのデータセグメントアドレスを取得し、保存されたデータ・セグメント・レジスタDSに送信、MOVデータ@斧、。
		mov dsは、斧;ので、メモリオペランドアクセス手順は、データ・セグメントへのアクセスがデフォルトで指定されたときに、そのDS  
		MOV DX、273h
		MOVアル、10000010H   
		アウトDX、アル
		
関数:	
		通話遅延
		MOV DX、B	
		らに、DX;らのポートアドレスからのデータ読み出しでDX
		そして、アル、00001111B
		CMPアル、00000001B
		それはFUN1です
		CMPアル、00000010B
		それがfun2です
		CMPアル、00000100B
		fun3
		CMPアル、00001000B
		あなたfun4	
		
FUN1:MOV DX、A
		MOVアル、00H
		DXから、アル、アル値はDXのポートアドレスに読み出されます
		JMP機能
		
fun2:MOV DX、A
		MOVアル、0FFH
		アウトDX、アル
		
		MOV DX、C
		MOVアル、01011011B
		アウトDX、アル
		JMP機能	

fun3:MOV DX、C
		MOVアル、01001111B
		アウトDX、アル
		MOV DX、A
		
fun3xh:MOV CXを、8
        LEAのBX、ledshow
		ROL ledshow
		MOVら、7
		12月7
		XLAT
		アウトDX、アル
		通話遅延
		ループfun3xh
		JMP機能
		
fun4:MOV DX、C
		MOVアル、01100110B
		アウトDX、アル
		MOV DX、A
		
fun4xh:MOV CXを、8
		LEAのBX、ledshow
		RORのledshow
		MOVら、ゼロ
		ゼロ株式会社
		XLAT
		アウトDX、アル
		通話遅延
		ループfun4xh
		JMP機能

サブルーチンを開始PROC;遅延周辺PROC近く使用した場合、サブルーチン、同じコードセグメントにプログラムを呼び出しは、同じコードセグメントの他のプログラムによって呼び出されることができ、はるかに同じコードセグメントで同じまたは異なるコードであってもよいしないことにより呼ばれるプログラムのセクション。
		プッシュCX
		MOV CX、30000
DELAY1:ループDELAY1
		ポップCX
		RET;サブルーチンコールの終了、サブルーチンプログラムの次のステップに対応するアドレス転送からのパラメータの転送を達成するため
遅延ENDP

END START

  フォワードおよびアセンブリコード:

	TINY .MODEL
COM_ADD EQU 0273H	
PA_ADD EQU 0270H	
PB_ADD EQU 0271H
PC_ADD EQU 0272H		
	.STACK 100
	。データ
LED_Data DB 11111110B	
		DB 11111101B	
		DB 11111011B
		DB 11110111B	
		DB 11101111B	
		DB 11011111B
		DB 10111111B
		DB 01111111B		

	。コード
START:MOV AX、データ@
		MOV DS、AX
		NOP
		MOV DX、COM_ADD
		MOV AL、82H; PA、PB、基本モード出力のPC
		OUT DX、AL
		
LOOP1:CALL DL500ms
		CALL DL500ms
		MOV DX、PB_ADD	
		Al、DX
		AND AL、00001111B
		CMP AL、00000001B
		JE F1
		CMPアル、00000010B
		あなたF2
		CMPアル、00000100B
		それはF3です
		CMPアル、00001000B
		それはF4です
		 
F1:
		MOV DX、PA_ADD
		MOVアル、00H
		OUT DX、アル
		JMP LOOP1

F2:MOV DX、PA_ADD
		MOVアル、0FFH
		OUT DX、アル
		MOV DX、PC_ADD
		MOVアル、01011011B
		アウトDX、アル
		JMP LOOP1
		
F4:
		MOV DX、PC_ADD
		MOVアル、01100110B
		アウトDX、アル
		MOV DX、PA_ADD
		LEAのBX、LED_DATA
		MOVアル、0
		XLAT
		アウトDX、アル
		コールDL500ms
		LEAのBX、LED_DATA
		MOVアル、1
		XLAT
		アウトDX、アル
		コールDL500ms
		LEAのBX、LED_DATA
		MOVアル、2
		XLAT
		アウトDX、アル
		コールDL500ms
		LEAのBX、LED_DATA
		MOVアル、3
		XLAT
		アウトDX、アル
		コールDL500ms
		LEAのBX、LED_DATA
		MOVら、4
		XLAT
		アウトDX、アル
		コールDL500ms
		LEAのBX、LED_DATA
		MOVアル、5
		XLAT
		アウトDX、アル
		コールDL500ms
		LEAのBX、LED_DATA
		MOVら、6
		XLAT
		アウトDX、アル
		コールDL500ms
		LEAのBX、LED_DATA
		MOVら、7
		XLAT
		アウトDX、アル
		コールDL500ms
		JMP LOOP1

F3:	
		MOV DX、PC_ADD
		MOVアル、01001111B
		アウトDX、アル
		MOV DX、PA_ADD
		LEAのBX、LED_DATA
		MOVら、7
		XLAT
		アウトDX、アル
		コールDL500ms
		LEAのBX、LED_DATA
		MOVら、6
		XLAT
		アウトDX、アル
		コールDL500ms
		LEAのBX、LED_DATA
		MOVアル、5
		XLAT
		アウトDX、アル
		コールDL500ms
		LEAのBX、LED_DATA
		MOVら、4
		XLAT
		アウトDX、アル
		コールDL500ms
		LEAのBX、LED_DATA
		MOVアル、3
		XLAT
		アウトDX、アル
		コールDL500ms
		LEAのBX、LED_DATA
		MOVアル、2
		XLAT
		アウトDX、アル
		コールDL500ms
		LEAのBX、LED_DATA
		MOVアル、1
		XLAT
		アウトDX、アル
		コールDL500ms
		LEAのBX、LED_DATA
		MOVアル、0
		XLAT
		アウトDX、アル
		コールDL500ms
		JMP LOOP1

DL500ms PROC NEAR
		PUSH CX
		MOV CX、30000
DL500ms1:LOOP DL500ms1
		POP CX
		RIGHT
DL500ms ENDP
	 	END START

  大手トピック:

 

 

 

 

 

 

 

 

8 DUP(0)の光を照射します
            MOVのSI、Leddyオフセット
            コールLEDdisp
LEDdisp PROC
                プッシュ斧
	プッシュBX
	プッシュDX
	MOV BX、オフセットLEDtb
	MOVああ、0FEH
LED1:lodsb
	XLAT CS:LEDtb
	MOV DX、segport
	アウトDX、アル
	mov al, ah
	mov dx, bitport
	out dx, al
  	call delay
	rol ah, 1
	cmp ah, 0feh
	jnz LED1
	pop dx
	pop bx
	pop ax
	ret
LEDtb	db 0c0h, 0f9h, 0a4h, 0b0h, 99h, 92h, 82h, 0f8h
	db 80h, 90h, 88h, 83h, 0c6h, 0c1h, 86h, 8eh
LEDdisp	endp
timer	=10
delay	proc
	push bx
	push cx
	mov bx, timer
delay1:	xor cx, cx
delay2: 	loop delay2
 	dec bx
	jnz delay1
	pop cx
	pop bx
	ret
delay	endp

  

 

 

 

おすすめ

転載: www.cnblogs.com/CongG/p/11951066.html