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

实验环境:intel x386

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

SSTACK	SEGMENT STACK
	  	DW 32 DUP(?)
SSTACK	ENDS

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

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

有两种解法

1.

SSTACK 	SEGMENT STACK
		DW 32 DUP(?)
SSTACK 	ENDS

CODE	SEGMENT
		ASSUME CS:CODE, SS:SSTACK
START:	PUSH DS
	XOR AX, AX		;SET AX = 0000H
	MOV DS, AX
	CLD				;CLOSE INTERUPTE
	MOV SI, 3500H
	MOV BX, 3600H
	MOV CX, 8		;FOR LOOP
AA1:	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 21H
CODE 	ENDS
	END START

2.

SSTACK 	SEGMENT STACK
		DW 32 DUP(?)
SSTACK 	ENDS

CODE	SEGMENT
		ASSUME CS:CODE, SS:SSTACK
START:	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 21H
CODE 	ENDS
		END START

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

DATA SEGMENT
	STR1 DB ‘ABCDEFGHIJKLN‘
	COUNT EQU $-STR1				;$的值表示count的偏移地址, 而str1是BUF所占用的字节数
	STR2 DB COUNT DUP(0)
DATA ENDS
SSTACK SEGMENT STACK				;!!--DEF--!汇编程序发现这是堆栈段,执行的时候会直接使SSTACK -> SS
		DB 200H DUP(0)
SSTACK ENDS

CODE 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 21H
CODE	ENDS
	END START
		                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

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

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

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

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

时间: 2024-10-18 14:27:29

微机接口技术与汇编语言上机实验报告_汇编初步(intel8086)的相关文章

微机接口中的汇编语言

之前汇编学的不是很好.乘这次微机接口把汇编语言算是补上来了. 下面是这段时间的相对于微机接口中使用的汇编语言的笔记. PTR 在没有寄存器名存在的情况下,用操作符"X ptr"指明内存单元的长度,X在汇编指令中可以为word 或者byte. 例如: mov word ptr ds:[0],1 inc word ptr [bx] move byte ptr ds:[0],1 inc byte ptr [bx] 在没有寄存器参与的内存单元访问指令中,必须要显性地告诉CPU所要访问的单元是字

汇编语言程序设计实验报告四

南京信息工程大学实验报告 实验名称 实验 4 [bx]和loop的使用 实验日期 得分 学院 计软院 专业 计算机科学与技术 年级 2017级 班次 5班 姓名 陈奕明 学号 20171308194 一.实验目的 1. 理解和掌握寄存器间接寻址方式[bx] 2. 通过汇编指令loop的使用理解编程语言中循环的本质 3. 熟练掌握使用debug按需调试完整汇编源程序的方法 二.实验准备 1. 学习/复习第 5章使用[bx]和loop实现循环的编程应用示例(教材 5.5节,5.8节) 2. 复习第3

机器指令和汇编语言第一次实验 报告

实验结论 实验任务(1) 1,用E指令将书上的指令写入内存 首先用E命令以1000:0为起始的内存单元写入了书上的机器码,然后用R指令查看CPU寄存器的内容,图中的CS=073H,IP=0100H意为指向内存073H:0100,而后的R指令则改变了CS和IP的内容,使其指向1000:0,T指令执行1000:0处的指令.执行后,AX中的内容被改写为4E20H,IP变为IP+3.+3意为该指令长度为3.继续T指令执行.最后结果1000:0021表示该指令总长度为21个字节 2用A指令写入内存 用A指

汇编语言程序设计实验报告三

一.实验目的1. 掌握汇编语言源程序(8086 dos 汇编)编写→汇编→链接→调试的方法2. 加深对 1-4 章基础知识的理解二.实验准备1. 结合第 4 章课件和教材,学习/复习完整汇编源程序编写→汇编→连接→运行→调试的方法2. 复习第 1-3 章以下基础知识:(1)寄存器用法① 通用寄存器 AX, BX,CX, DX: ② 段寄存器 CS, DS, SS 和两个特殊寄存器 IP: (2)内存访问,特别是多字节数据的存.取:(3)汇编指令用法,注意其合法使用形式① 数据传送类指令:mov,

c#接口与虚函数的实验报告

1)定义Student类,用string型变量name存储学生姓名,用int型变量age存储学生年龄.Student类实现IComparable接口.要求从键盘输入学生的姓名和年龄,并注意可能出现的异常及其处理.IComparable接口定义如下(系统已定义,可直接使用) interface IComparable { int CompareTo(object obj); //如果自身与obj相等返回0,<obj返回-1,>obj返回1 ,注意可能出现的异常 } (2)定义Student类的派

软件测试上机实验报告

Tasks: Install Junit(4.12), Hamcrest(1.3) with Eclipse Install Eclemma with Eclipse Write a java program for the triangle problem and test the program with Junit. 实验过程: 1. 从办公网上下载junit-4.12.jar和hamcrest-all-1.3.jar包,并通过build path导入. 2. 下载Eclemma并安装,H

汇编语言程序设计实验报告二

实验目的: 1.熟练掌握使用debug工具编写和调试汇编命令的方法: 2.理解并掌握内存中多字节数据的存放: 3.理解并掌握[栈]内存空间的特性和使用: 4.理解并掌握8086汇编指令 mov,add,sub,push,pop的用法. 实验步骤: p74(1) 下图为书上实验没修改数据之前所得到的结果,有错误还希望大家指正!!! 根据实验二的要求,在使用-a进行调试之前,使用-e命令修改内存单元,如下图所示 注:因为之前修改完之后不小心cls清了一下屏,所以0021:0~0021:7的默认值就不

第五章上机实验报告

1.     实践题目及问题描述 工作分配问题:n件工作分配给n个人,为每一个人都分配1 件不同的工作,工作i分配给第j个人所需的费用为cij,设计一个算法,使总费用最小. 2.     算法描述 (1)     解空间 {<x11,x12-x1n>,<x21,x22-x2n>--<xn1,xn2-xnn>} 其中 <x11,x12-x1n>!=<x21,x22-x2n>!=-!= <xn1,xn2-xnn> (2)     解空间树

算法第二章上机实验报告

1.实践题目 7-1 二分查找 (20 分) 输入n值(1<=n<=1000).n个非降序排列的整数以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数.若x不存在,输出-1和比较次数. 输入格式: 输入共三行:第一行是n值:第二行是n个整数:第三行是x值. 输出格式: 输出x所在的下标(0~n-1)及比较次数.若x不存在,输出-1和比较次数. 输入样例: 4 1 2 3 4 1 输出样例: 0 2 2.问题描述 本道题是让我们输入非降序排列的整数,也就是说是排好