当前位置: 代码迷 >> 汇编语言 >> 微处理机接口技术与汇编语言上机实验报告_汇编初步(intel8086)
  详细解决方案

微处理机接口技术与汇编语言上机实验报告_汇编初步(intel8086)

热度:176   发布时间:2016-05-02 04:36:11.0
微机接口技术与汇编语言上机实验报告_汇编初步(intel8086)

实验环境:intel x386

 

一。要求:将3000H单元开始置数为00H-0FH

SSTACK	SEGMENT STACK	  	DW 32 DUP(?)SSTACK	ENDSCODE	SEGMENT		ASSUME CS:CODE, SS:SSTACKSTART:	PUSH DS	XOR AX, AX	MOV DS, AX	MOV SI, 3000H	MOV CX, 16AA1:	MOV [SI], AL	INC SI	INC AL	LOOP AA1 		;CX == 0? NEXT():AA1	MOV AX, 4C00H	;AH = 4C STOP CUR, RETURN	INT 21HCODE 	ENDS	END START


 二。要求:将3500H后8位置入3600H开始的8位

有两种解法

1.

SSTACK 	SEGMENT STACK		DW 32 DUP(?)SSTACK 	ENDSCODE	SEGMENT		ASSUME CS:CODE, SS:SSTACKSTART:	PUSH DS	XOR AX, AX		;SET AX = 0000H	MOV DS, AX	CLD				;CLOSE INTERUPTE	MOV SI, 3500H	MOV BX, 3600H	MOV CX, 8		;FOR LOOPAA1:	MOV AL, [SI]		;REP MOVSB 	;DS:[SI] -> ES:[DI], SI+1, DI+1	MOV [BX], AL	INC SI	INC BX	LOOP AA1		;CX == 0 ? NEXT() : AA1	MOV AX, 4C00H	INT 21HCODE 	ENDS	END START

2.

SSTACK 	SEGMENT STACK		DW 32 DUP(?)SSTACK 	ENDSCODE	SEGMENT		ASSUME CS:CODE, SS:SSTACKSTART:	PUSH DS	XOR AX, AX		;SET AX = 0000H	MOV DS, AX	CLD			;CLOSE INTERUPTE	MOV ES, AX	MOV SI, 3500H	MOV DI, 3600H	MOV CX, 8		;FOR LOOP	REP	MOVSB 		;DS:[SI] -> ES:[DI], SI+1, DI+1	MOV AX, 4C00H	INT 21HCODE 	ENDS		END START


 

 三。要求:将数据段中的str1赋给str2

 

DATA SEGMENT	STR1 DB 'ABCDEFGHIJKLN'	COUNT EQU $-STR1				;$的值表示count的偏移地址, 而str1是BUF所占用的字节数	STR2 DB COUNT DUP(0)DATA ENDSSSTACK SEGMENT STACK				;!!--DEF--!汇编程序发现这是堆栈段,执行的时候会直接使SSTACK -> SS		DB 200H DUP(0)SSTACK ENDSCODE SEGMENT	ASSUME DS:DATA, ES:DATA, SS:SSTACK, CS:CODE		;DATA(DATA SEGMENT)	;ES(EXTRA DATA SEGMENT)	;SSTACK -> SS(STACK SEGMENT)	;CODE -> CS(CODE SEGMENT)START:	MOV	AX, DATA	MOV DS, AX	MOV ES, AX	LEA SI, STR1	LEA DI, STR2			MOV CX, COUNT	CLD							;Direction Flag to 0 (0 -> DF)LP1:	MOVSB						;DS:[SI] -> ES:[DI], SI++, DI++ 	DEC CX						;	JNZ LP1 					;THREE SENTENCE == REP MOVESB, CX FOR COUNT	MOV AH, 4CH					;MOV AX, 4C00H	INT 21HCODE	ENDS	END START                              		                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       


 二。要求:将3500H后8位置入3600H开始的8位

 


 四。要求:使用DOS接口输出一段字符串

DATA SEGMENT	MESSAGE DB 'please input your name!' , 0DH, 0AH, '$'DATA ENDSCODE SEGMENTSTART:	MOV AH, 09H	MOV DX, SEG MESSAGE	MOV DS, DX	MOV DX, OFFSET MESSAGE	INT 21H        ...CODE ENDS


 

 

  相关解决方案