当前位置:文档之家› C8051f410利用SMBUS实现基于I2C器件操作实验

C8051f410利用SMBUS实现基于I2C器件操作实验

C8051f410利用SMBUS实现基于I2C器件操作实验
C8051f410利用SMBUS实现基于I2C器件操作实验

汇编语言循环程序实验报告

东北大学 计算机硬件技术基础实验报告 一、实验目的 (1) 加深对循环结构的理解; (2) 掌握循环程序的设计方法; (3) 熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。 二、实验内容 1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。 2.设STR字符串是以0结尾。试编写一个把字符串中的所有大写字母改为小写字母的程序并将转换后的字符串显示输出。 3.试编程从自然数1开始累加,直到累加和大于5050为止,统计被累加的自然数的个数,并把统计的个数送入COUNT单元,累加和送入TOTAL单元。 三、算法描述流程图 实验内容1、2、3的流程图分别为图1、图2、图3。

图 1 图 2 图3

四、实验步骤 1.已知以BUF为首地址的字存储区中存放着8个有符号二进制数,是编写程序将其中大于等于0的数依次送BUF1为首地址的字存储区中,小于0的数依次送以BUF2为首地址的字存储区中。同时将大于等于0的数的个数送A字变量,将小于0数的个数送B字变量。 1)输入源程序: DATA SEGMENT BUF DW 23,123,-12,-210,45,0,90,-453 BUF1 DW 8 DUP(0) BUF2 DW 8 DUP(0) A DW ? B DW ? DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX LEA BX, BUF LEA SI, BUF1 LEA DI, BUF2 MOV A,0 MOV B,0 MOV CX,8 L0: MOV AX,[BX] CMP AX,0 JGE L1 MOV [DI],AX ADD DI,2 INC B JMP NEXT L1: MOV [SI],AX ADD SI,2 INC A NEXT: ADD BX,2 LOOP L0 MOV AH, 4CH INT 21H CODE ENDS END START 2)运行程序。

基本演示汇编语言实验操作方法

基本演示1汇编语言实验操作方法 一.实验的基本方法(MASM宏汇编子目录下) 1.在DEBUG下运行汇编指令或简单小程序 在DEBUG提示符下,用汇编命令A:输入汇编指令或简单小程序,用单步命令T 或全程命令G来执行,并检查执行中间结果与最后结果。 2.标准汇编程序上机方法 A.建立ASM文件,用https://www.doczj.com/doc/156497095.html,全屏幕编辑文件或其他编辑文件建立扩展名为ASM的源程序. B.用MASM(或ASM)产生扩展名为OBJ目标文件。 C.用LINK产生扩展名为EXE可执行文件。 D.在DEBUG下,把文件调入内存,调试程序。 E.在DOS下可直接执行扩展名为EXE的文件。(详细过程) 二.汇编语言的工作环境. A.硬件环境 IBM-PC及其系列机 内存256K字节以上 外存:硬盘或至少一个软驱 CPU:80586以上 显示器:单色或彩色显示器 键盘:标准ASCII码键盘 B.软件环境 编缉程序:https://www.doczj.com/doc/156497095.html,或其他编缉程序 汇编程序:MASM.EXE或ASM.EXE 连接程序:LINK.EXE 调试程序:https://www.doczj.com/doc/156497095.html,或DEBUG.EXE

A命令 在命令A后跟地址,按回车输入程序,可以连续输入,当按下回车后,就退回到DEBUG下。 T命令

T命令为跟踪命令。 G命令 该地址指定了运行的起始地址,如不指定则从当前的cs:ip开始运行EDIT.EXE

怎样生成.exe文件

生成.obj文件

基本演示2DEBUG命令的使用 A.程序调用命令 C>DEBUG[D:][PATH][FILENAME[.EXT]][PARM1][PARM2] 其中,文件名是被调试文件的名字。如未键入文件名。可用DEBUG命令N和L 把需要文件装入存储器后再调试。D指定驱动器,PATH为路径,FILENAME为文件名,PARM为命令参数 B.显示存储单元命令 -D[ADDRESS]或;ADDRESS地址 -D[RANGE];RANGE范围 C.修改存储单元内容命令 -E ADDRESS[LIST] D.检查和修改寄存器内容命令 -R[REGISTER NAME];Register name寄存器名字 E.汇编命令 -A[ADDRESS] F.跟踪命令 -T[=ADDRESS][VALUE];Value变量值 G.运行命令 -G[=ADDRESS][ADDRESS2[ADDRESS3] H.反汇编命令 -U[ADDRESS] -U[RANGE]

微机实验心得体会

微机实验心得体会 【篇一:微机原理实验报告】 一、实验目的 1.掌握qtspim的调试技术 2.了解mips汇编语言与机器语言之间的对应关系 3.掌握mips汇编程序设计 4.了解c语言语句与汇编指令之间的关系 5.熟悉常见的mips汇编指令 6.掌握程序的内存映像 二、实验任务 用汇编程序实现以下伪代码:要求采用移位指令实现乘除法运算。 int main() { int k, y ; int z[50] ; y = 56; for(k=0;k50;k++) z[k] = y - 16 * ( k / 4 + 210) ; } 三、实验要求 1.完成汇编语言程序设计、调试、测试全过程 2.指出用户程序的内存映像,包括代码段和数据段 3.完成软件实验报告 四、实验过程 程序源代码: .data #定义用户数据段 z:.space 200 .text main: la $s0,z #$s0=addrz li $t0,0 #$s1=k=0 li $t1,56 #$s2=y=56 loop: slti $t2,$t0,50 #判断k是否小于50 beq $t2,$0,done #当k大于等于50时跳转 srl $t3,$t0,2 #k/4 addi $t3,$t3,210 #k/4+210

sll $t3,$t3,4 #16*(k/4+210) sub $t3,$t1,$t3 #y-16*(k/4+210) sw $t3,0($s0) #写进z[k] addi $s0,$s0,4 #地址移一位 addi $t0,$t0,1 #k加1 j loop #循环 done: li $v0 10 syscall 五、实验总结 通过这次实验,加深了我对理论学习的代码书写规范的理解,练习 了qtspim软件的使用,对以后的学习有很大的帮助。这次实验的内 容相对比较简单,原理容易理解,编译的过程中遇到了一点困难, 不过在同学的帮助下顺利解决了。 【篇二:微机原理与接口技术实验总结】 微机原理与接口技术实验总结 11107108徐寒黎 一、实验内容以及设计思路 1、①试编写一程序,比较两个字符串string1、 string2 所含字符 是否相同,若相同输出“match”,若不相同输出“no match”。 设计思路:定义一个数据段,在数据段中定义两个字符串作为 string1、 string2以及几个用于输入提示的和输出所需内容的字符串,定义一个堆栈段用于存放,定义代码段。关键步骤以及少量语句:第一步将string1和string2都实现用键盘输入,方法是 mov dx,offset string2 mov ah,0ah 并且显示在显示器上,显示方法将0ah改成09h,语句与上面类似。然后进行比较第一个单元, mov al,[string1+1] cmp al,[string2+1] jnz nomatch 若字符串长度不等,则直接跳转,输出输出“no match”; 若长度相等再逐个比较 lea si,[string1+2] lea di,[string2+2] mov cl,[string1+1]

汇编实验报告一 熟悉7种寻址方式

电子信息工程学系实验报告——适用于计算机课程课程名称:IBM-PC汇编语言程序设计 实验项目名称:熟悉7种寻址方式实验时间: 班级:姓名:学号: 一、实验目的: 掌握debug命令,熟悉7种寻址方式。 二、实验环境: ASM轻松汇编 三、实验内容: 1、上机输入以下程序: data segment x db 01,02 y db ?,? z db ?,? w dw 1234h data ends code segment main proc far assume cs:code,ds:data start: push ds xor ax,ax push ax mov ax,data mov ds,ax mov dx,1234h -----无有效地址 mov cl,ds:[0000h] -----0000h mov si,0000h mov di,0002h mov al,[si] ----0000h mov [di],al ----无有效地址 add si,1 add di,1 mov al,[si] mov [di],al mov si,0000h mov di,0000h mov al,x[si] mov y[di],al 成绩: 指导教师(签名):

add si,1 add di,1 mov al,x[si] -----0001h mov y[di],al mov si,0000h mov di,0000h mov bx,0000h mov bp,0004h mov al,[bx][si] ----0000h mov ds:[bp][di],al add si,1 add di,1 mov al,[bx][si] mov ds:[bp][di],al ret main endp code ends end start 2、写出上面汇编程序中字体为红色的指令的源操作数的寻址方式以及源操作数的有效地址。 指令寻址方式有效地址mov dx,1234h立即寻址方式无有效地址mov cl,ds:[0000h]直接寻址方式0000h mov al,[si]寄存器间接寻址方式0000h mov [di],al寄存器寻址方式无有效地址 mov al,x[si] 寄存器相对寻址方式0001h mov al,[bx][si]基址变址寻址方式0000h 画图说明数据段中变量所分配的存储空间及初始化的数据值。 14F2:0000 0001 0002 0003 0004 0005 0006 0007 01 02 01 02 00 00 34 12

程序汇编实验举例及总结

一、实验内容 1?在屏幕上显示一个字符的源程序: DATASSEGMENT STRINGS 'HELLO!;'$' ORG 100H DATASENDS C0DES5EGMENT ASSUMECS:CODES,DS:DATAS START MOV AX,DATAS MOV DS,AX LEADX,STRING MOV AH,09H INT 21H MOV AH,4CH INT 21H CODESENDS ENDSTART 01DATfiS SEGMENT 62STRING DB * HELLO!' /S' 03ORG 1O0H 仙DATAS ENDS CODES SEGMENT Q6ASSUME CS:CODES.DS:DATAS 07START: 朋MOU AK.DATAS 09MOU DS,AX 10LEA DX, STR ING 11MOV AH,@9H 12INT 21H 13MOU AH,UCH 1U I NT 21H 15 16CODES ENDS END STfiUT H DOSBox 074, Cpu speed: HELLU! Pre&s araj Jccy to contilKic 2.编写一个程序,实现字符串的复制功能,并且将复制的字符串显示出来 DATASSEGMENT STRING_ADB 'ICH LIEBE DIC障 COUNTEQU&OFFSEETRING—A

DATASENDS STACK S EGMENT STRING_BDB COUNTDUP(?) STACKSENDS CODESSEGMENT ASSUMECS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX MOV AX,STACKS MOV ES,AX LEASI,STRING_A LEADI,STRING_B MOV CX,COUNT STD REP MOVSB LEADX,STRING_B MOV AH,9 INT 21H MOV AH,4CH INT 21H MOV AH,4CH INT 21H CODESENDS ENDSTART

汇编实验报告

汇编语言程序设计 实验报告 学号:100511530 班级:电气信息类1005 姓名:陆淑琴 指导老师:李诗高

实验一、汇编语言上机的基本过程及环境 【实验目的】 (1)熟悉汇编语言的编辑、汇编、连接及调试的全过程,重点掌握使用DEBUG调试程序的方法。 (2)了解汇编语言的程序结构。 【实验内容】 (1)在数据段中定义两个数(数据自拟,包含有正数和负数),要求编写程序分别计算出这两个数的和、差、积、商,并用Debug的相关命令查询计算结果(包括对CF,OF,SF,ZF的影响)。 (2)首先对AX,BX,CX寄存器赋初值(数据自拟),再将AX寄存器的中间八位,BX的低四位和CX的高四位拼接成一个新的字,并把结果存入偏移地址为0000H的存储单元。其中BX的低四位作为结果字的高四位,CX的高四位作为结果字的低四位。并用Debug的相关命令查询内存单元的结果字。 源代码: DA TA SEGMENT val1 DW 1000h val2 DW 2000h maxv DW ? DA TA ENDS STACK SEGMENT STACK 'STACK'

DB 100H DUP(?) STACK ENDS CODE SEGMENT 'CODE' ASSUME CS:CODE, DS:DATA,SS:STACK .386 MAIN: MOV AX, DATA; MOV DS, AX PUSH val1 PUSH val2 CALL MAX ; POP maxv ;栈顶返回值出栈 MOV AX, 4c00H INT 21H MAX PROC PUSH BP ;执行该指令前堆栈情况 MOV BP, SP ;执行后堆栈情况 MOV AX, [BP+4] CMP AX, [BP+6] JA EXIT MOV AX, [BP+6] EXIT: MOV [BP+6], AX ;用栈顶返回值 POP BP RET 2 ;执行后堆栈情况 MAX ENDP CODE ENDS END MAIN 【实验步骤】 (1)用编辑软件(记事本、UltraEdit等)编辑一个扩展文件名为ASM的汇编语言源程序。 (2)用汇编程序MASM汇编上述的汇编语言源程序,形成目标代码文件。(扩展名为OBJ) (3)用连接程序LINK连接目标代码文件,形成可执行文件。(扩展名为EXE)(4)用DEBUG32调试可执行文件,观察执行结果,以验证其正确性。

计算机组成原理与汇编实验报告

计算机组成原理与汇编 实验报告 Company Document number:WUUT-WUUY-WBBGB-BWYTT-1982GT

计算机组成原理与汇编课程设计 实验报告 目录 一、课程设计目标 (3) 二、课程设计基本要求 (3) 三、课程设计的内容 (3) 四、课程设计的要求 (5) 五、实验详细设计 (5) 1.统计文件中各字母出现的频率 (5) 2.用递归计算50以内Fibonacci 数, 以十进制数输出 (9) 3.虚拟平台模拟机实验 (11) 六、使用说明 (19) 七、总结与心得体会 (19) 八、参考文献 (20) 九、附录 (20) 1.字符统计.asm (20) 2.斐波那契数(小于50).asm (29) 一、课程设计目标 通过课程设计使学生综合运用所学过的计算机原理与汇编知识,增强解决实际问题的能力,加深对所学知识的理解与掌握,提高软硬件开发水平,为今后打下基础。 课程设计的目的和要求: 1、使学生巩固和加强《计算机原理与汇编语言》课程的基本理论知识。

2、使学生掌握汇编语言程序设计的方法及编程技巧,正确编写程序。 3、使学生养成良好的编程习惯并掌握调试程序的基本方法。 4、使学生养成规范书写报告文档的能力,撰写课程设计总结报告。 5、通过查阅手册和文献资料,培养学生独立分析问题和解决问题的能力。 二、课程设计的基本要求 1、认真查阅资料,独立完成设计任务,每道题都必须上机通过。 2、编写预习报告,写好代码,上机调试。 3、独立思考,培养综合分析问题解决问题和调试程序的能力。 4、按时完成课程设计,写出课程设计报告。 三、课程设计的内容 1、给定一个英文ASCII码文件,统计文件中英文字母的频率,以十进制形式输出。 2、用递归计算50以内Fibonacci 数, 以十进制数输出. 3、虚拟平台的模型机实验,具体要求如下: 1)选择实验设备,将所需要的组件从组件列表中拖到实验设计流程栏中 2)搭建实验流程:根据原理图1和电路图(见附件),将已选择的组件进行连线。 3)输入机器指令:选择菜单中的“工具”,再选择“模型机调试”,在指令输入窗 口中输入如下指令: 00000000 00010000 00001001 00100000 00001011 00110000 00001011 01000000 00000000 00000001 本实验设计机器指令程序如下:

第一次汇编实验

第一次汇编实验 一、实验目的 1.熟悉汇编语言源程序书写格式。 2.熟悉汇编语言源程序的编辑、汇编、连接、执行步骤。 3.练习DEBUG常用命令的使用。 4.练习常通用数据传送类指令的使用。 二、实验内容 1.编辑程序一,编写程序并用DEBUG命名保存,得出结果并用DEBUG单步调试。 2.编辑程序二,用DEBUG调试,查看DATA段中定义的数据在内存中的存放方式, 并单步执行查看每一语句执行后相关寄存器的内容。 3.编辑程序三,将立即数2AH送入内存数据段1000H开始的100个单元中,并单步 执行查看每一语句执行后相关寄存器的内容。 4.编辑程序四,练习压栈出栈指令,并单步执行查看每一语句执行后相关寄存器的 内容。 5.编辑程序五,练习交换指令XCHG,并单步执行查看每一语句执行后相关寄存器的 内容。 6. 三、实验步骤 <程序一> 1.编辑程序并命名为https://www.doczj.com/doc/156497095.html,。 2.修改寄存器内容,写入文件总字符数.

3.查看程序并进行反汇编(-u)。 4.根据反汇编得到的机器码,用e写入内存。 <程序二> 1.编辑源程序并汇编成目标文件。

2.连接成可执行文件并运行输出结果。 3.检查寄存器内容(-r)。

4.反汇编(-u)。 5.单步调试(-t)。 <程序三> 1.编辑程序,将立即数2AH送入内存数据段1000H开始的100个单元中,并单步执 行。

可以看到mov di,1000 mov cx,64 mov al,2a执行后,寄存器DI=1000 CX=0064 AX=002A,执行inc di,dec cx后,DI,CX里的值分别增加减少1。 2.反汇编(-u)。

汇编试验报告-学生信息管理系统(互联网+)

学生信息管理系统 1. 实验类别 使用汇编语言编程 2. 实验内容和实验目的 学生的信息包括姓名、班级、学号和成绩,其中成绩精确到1位小数。编写程序实现以下功能: (1) 可以录入学生的信息,成绩以十进制形式录入,并显示; (2) 可以按成绩进行排序显示; (3) 可以统计平均成绩; (4) 可以统计不及格、60~70、70~80、80~90、90~100各分数段的人数。 3. 实验设备环境 Windows 7 操作系统的pc 机 ,使用QASM270编译器环境下编写。 4. 实验实现过程及方法 首先数据采用二维数组的形式进行存储,分为学生信息部分与成绩部分。 然后将输入学生数也保存在一个一维数组中。 然后再信息的存储过程中,对于字符串输入进行转换,以二进制的形式存储在数据段中。 然后采用冒泡排序,对于数据段中的人员信息进行排序。以成绩为参数。 然后再对每个人员成绩进行遍历,统计各个数据层次中人员数,然后再成绩遍历的同时,将平均成绩也同时求出,在求平时成绩的时候,首先先将整数部分乘10 然后再加上小数部分,以便于后续的输出。 将排序后的人员信息及成绩显示出来,然后将平均成绩也同时打印出来,还有各个分数层次中的人员数也都一并显示出来。 下面是一些主要代码来实现上述过程: ;数据部分 NUMBER DB 3 DUP(0) ;第一个存个/十位(ASCII 码),第二个存个位(ASCII 码),第三个存学生数(二进制) ;用20字节单元表示学生信息,0-19中:0对应最大字符,1对应实际输入,2-18对应输入信息,19对应'$' INFORMATION DB 99 DUP(20 DUP(0)) ;用7字节单元来存分数,0-6中,0-4对应输入字符,5对应输入整数部分的二进制数,6对应于小数部分的二进制数 GRADE DB 99 DUP(7 DUP(0)) AVERAGE_GRADE_BUFFER DB 2 DUP(0) ;第一个存整数部分(二进制形式),

计算机汇编语言实验报告

汇编语言实验报告 姓名:组长:张亚昊(11072107) 组员:安然(11072109) 完成日期:2013年4月

题目1:分支程序设计 【题目要求】 编写程序,键入学生成绩(百分制),按A 、B 、C 、D 显示在屏幕上。【编程思路】 输入并存储一个INT 的赋值,比较一个数值在其中的哪个分支,并现实成绩的显示(ABCDE)【程序流程图】 【源代码】 一、 dseg segment MsgInput db 0ah,0dh,'Input a score:','$'MsgError db 'Invalid Input!','$'BufInputdb 5,?,5dup(?)Grade db 'EDCBA','$'dseg ends cseg segment assume ds:dseg,cs:cseg BEGIN: 开始 一个INT 的赋值 比较成绩属于哪一个档 数值在1-60 数值在60-70 数值在70-80 数值在80-90 数值在90-100 输出结果

mov ax,dseg mov ds,ax Init: lea dx,MsgInput mov ah,9 int21h lea dx,BufInput mov ah,0ah int21h mov dl,0ah mov ah,2 int21h mov ax,0 lea bx,BufInput+2 LoopCalc: cmp byte ptr[bx],0dh je Compare cmp byte ptr[bx],'0' jb Error cmp byte ptr[bx],'9' ja Error sub byte ptr[bx],'0' mov cx,10 mul cx mov cx,0 mov cl,[bx] add ax,cx inc bx jmp LoopCalc Compare: cmp ax,100 ja Error mov cl,10 div cl cmp al,9 jbe Next1 mov al,9 Next1: cmp al,5

汇编语言实验报告

汇编语言程序设计实验报告 学院:计算机科学与技术 专业:计算机科学与技术 指导教师: ** 班级: ** 学号: ** 姓名:**

实验一集成环境及调试工具 一、实验题目 认识Tddebug集成操作软件 二、分析设计思想,绘制实验原理图、流程图 (一)、汇编语言程序的开发过程如图1.1所示,这个过程主要有编辑、编译、链接几个步骤构成。 图1.1 汇编语言程序开发过程 1、源程序的编辑 E: > EDIT TEST.ASM 编辑过程就是将源程序输入内存,生成一个扩展名为ASM的文本文件并存入硬盘。2、源程序的编译 E:>TASM TEST.ASM 编译也称为汇编,就是利用汇编器(如TASM或MASM)对源程序进行编译,生成扩展名为OBJ的目标文件。在编译过程中,检查语法错误,若有错,则不生成目标代码文件,并给出错误信息。根据错误信息应返回到编辑状态,修改源程序。 3、目标程序的链接 E:> TLINK TEST.OBJ 链接过程是利用链接程序(如TLINK或LINK)将用户目标程序和库文件链接、定位,生成扩展名为EXE的可执行文件。链接时,如果链接文件找不到所需要的链接信息,则发出错误信息,不生成可执行文件。 4、调试可执行程序 E:>TD TEST.EXE 如果生成的EXE文件运行后,并没有按照设计意图运行,就需要对程序进行调试,找出错误。再对源程序进行修改,即重复进行编辑、编译、链接、调试,直到生成完全正确的可执行文件为止。 (二)、Tddebug集成操作软件使用说明 1.该软件是集编辑(Edit.exe)、编译(Tasm.exe)、连接(Link.exe)和调试(TD.exe)

汇编语言实验报告

计算机学院 实验报告 (2016 ~2017学年度第二学期) 课程名称汇编语言程序设计实验名称计算阶乘 学号20154480506 姓名 张扬 专业 班级5班 软件工程 地点第一实验楼教师 凌云

一.实验题目 用汇编语言编写程序计算阶乘N!数值有键盘输入,结果在屏幕上面输出。二.流程图

三.实验代码 代码要配合程序界面进行说明 源代码: DATAS SEGMENT STRING DB "Please input a number(0-10000):" ,0dh,0ah ;提示用户输入数字字串 WRONGSTRING DB "Wrong input!!! Please input a number ! ",0ah,0dh,'$' ;用户输入错误提示 INPUTBUFFER DB 6,?,6 DUP(?) ;开辟出(留出)6个初值未知的字节单元空间 C10 DW 10 ;输入时进制转换的数 N DW ? ;要求阶乘的数 M DW ? ;步长 T DW ? ;进位 I DW ? OUTPUTBUFFER DW 30000 DUP(?) ;开辟出(留出)30000个初值未知的字单元空间 DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX MAIN PROC ;主程序 ;---------------------------------------------- CALL INPUT ;调用输入子程序 CALL FAC ;调用递归实现阶乘 MOV CX,DI

汇编实验心得

实验1 DOS操作基础 初次接触汇编的上机实验,感觉挺神奇的,感觉接触到了计算机里基础的东西,都是以前没见过的,有一些能够查询目录的指令,比如dir(目录显示指令)、type(显示文件内容命令)等等。可能是自己太安于计算机的基础的常规操作,都没去发现它还有这么多的值得发现的东西。 实验二汇编初体验 第一次在DOS环境下运行汇编程序,接触到了一些内部可以调用的程序比如MASM.EXE、ASM.EXE、LINK.EXE等等。还了解了debug下命令的一些用法,比如D(Dump)显示指定内存单元内容G(GO)运行命令,T(Trace)执行一条语句等等。 实验三DEBUG使用 这次实验课详细地介绍了debug的使用方法。主要用到的D,T,U。要多多上机才能学得更好。 实验四内存操作数及寻址方法 掌握了8088系统中数据在内存中的存放方式和内存操作数的几种寻址方式。 8088指令:INC,DEC,LOOP,INT 3,INT 20H,寄存器SI,DI。通过反复的操作熟练的掌握了debug的一些用法。对于寄存器还有一

些疑惑的地方,还得好好研究。 实验五数据串传送和查表程序 知道了MOV指令还有循环指令loop的用法。还有堆和栈指示器和堆栈操作指令push和POP。不过还是不太熟。 实验八显示十进制整数 这一次的实验,运用了更多的指令算法,课程脱节的问题也更明显地暴露出来,没有抓住核心的我走了不少弯路,但是只要用心,又有老师指导,还是能完成本次实验,并且先于理论课程学到了更新的知识。(抄的百度) 实验九方程求解 初次接触汇编语言的分支结构。用到了JMP指令。这当然和之前学的C语言的思想是一样的,发现思想实现起来还是很不容易的,多加练习。 实验十五中断服务程序 通过本次试验熟悉了汇编语言宏程序设计;了解了中断服务子程序的编写,其中应注意恢复原中断指令,将ds重新指向数据段。 (抄的百度)

汇编语言实验五

信息科学技术学院实验报告 课程名称汇编语言班级16软件工程1班实验名称编写、调试具有多个段的程序教导教师 姓名学号日期2018.04.06 一、实验目的 掌握在汇编代码中正确使用多个段 二、实验设备与环境 计算机 DOS操作系统或Windows 操作系统 MASM.EXE, LINK.EXE, https://www.doczj.com/doc/156497095.html, 或宏汇编集成环境 三、实验内容、程序清单及运行结果 (1)实验内容:

程序清单: Assume cs:code,ds:data,ss:stack Data segment Dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h Data ends Stack segment Dw 0,0,0,0,0,0,0,0 Stack ends Code segment Start: mov ax,stack Mov ss,ax Mov sp,16 Mov ax,data Mov ds,ax Push ds:[0] Push ds:[2] Pop ds:[2] Pop ds:[0] Mov ax,4c00h Int 21h Code ends End start

运行结果: Data段的内容 ①CPU执行程序,程序返回前,data段即ds段中的数据为0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h。(红色标记处) ②CPU执行程序,程序返回前,cs=0774h、ss=0773h、ds=0772h。(绿色标记处) ③设程序加载后,code段的段地址为X,则data段的段地址为X-2,stack段的段地址为X-1。

汇编语言实验心得

一.实验内容 1.DEBUG的启动及其基本命令的使用 2.内存操作数与寻址方式 1)利用DEBUG程序中的“E”命令,将两个多字节数“12345678H”和“FEDCBA98H” 分别送入起始地址为DS:0200H和DS:0204H两个单元中。 2)分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H 单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。 3.顺序程序设计 X、Y、Z、V均为字变量,在X、Y、Z、V字单元中存放是16位带符号数。 试编写汇编语言程序完成以下功能: ①计算表达式值(V–(X*Y+Z-720))/X; ②将上述表达式运算结果整数放在SUM1单元,余数放在SUM2单元。 4.分支程序设计 1)设X,Y为字变量,假定不溢出,计算X=|X-Y|。 2)将NUM单元中的一位十六进制数(0~9,A~F),转换为对应的ASCII码 值存入ASC单元。 3)已知字节变量X,编程求下列表达式 即: 1 当x>0 y= 0 当x=0 -1 当x<0 5.循环程序设计 1)定义10个字节型带符号数,求其和。 2)在内存单元DATA中定义一个16位数,统计其16位中1的个数,存入内 存的字单元COUNT。 3)定义10个字型无符号数,编写程序求其最小值。 6.子程序设计 1)设计一个子程序,计算1+2+…+N,其中N为给定的正整数,且N小于100。 2)定义10个字型带符号数,编写子程序求其最大值和统计正数的个数。

3)从键盘接收4位十进制数,将其转换为十六进制数并显示。 二.实验心得 上学期学习计算机组成原理的时候就对汇编有所了解,但通过这学期的学习,使我更加深入了解了其知识体系和计算机组成及内部程序执行的原理。对于各命令的熟练掌握后,自己亲自动手实验更是体会到了各命令的用途及执行的方法。通过各个基本命令可以轻松更改计算机内部寄存器的值和读写内存,磁盘,I/O端口的值,通过更改观察其对计算机的影响变化。 对于汇编语言的寻址方式,更是多种多样,通过对各寻址方式的比较,可以感受到各寻址方式的不足与好处,还有是对各寻址方式的注意事项,有的寻址方式需专用的寄存器,有的寄存器是禁止使用的,然而有的就开放的多,对寄存器没有特殊要求,然而在编程过程中使用较为合适的寻址方式是提高程序运行效率的保障,在对寄存器中的值做运算时要正确书写各值,在X86中只支持十六进制数,在运算结束后值得保存也是很重要的,不能随意保存。写数据传送指令时,目的操作数和源操作数的类型一定要匹配,C S不能作为目的操作数。 在学习完汇编语言程序格式和结构后就可以完整的编写汇编语言程序了,在编程中各种结构的选择是对程序效率的保障,在顺序结构中就不需要各种选择分支结构,顺序结构适合一些较简单按顺序执行的程序,然而复杂程序的编写就需要用到选择结构和分支结构了。另外,我们还应该掌握DOS系统功能调用,宏汇编等知识。 现在课程已结束一段时间,虽然不是完全掌握,但是还是了解了一些基本操作,可以解决一些基本问题,想要学好汇编,还需花更多时间去学习。在今后的学习过程中尽可能完善自己。

河北工业大学-汇编实验报告 实验一.

汇编语言程序设计实验报告 实验一顺序与分支程序设计 姓名:刘** 班级:计15x 学号:15**** 一、实验目的a) 掌握顺序程序设计方法。 b)掌握分支程序的结构及分支程序的设计,调试方法。 c)学习数据传送及算术和逻辑运算指令的用法。 d)熟悉在PC 机上建立、汇编、连接、调试和运行汇编语言程序的过程。二、实验内容 a)从键盘上接收一位十进制数X,计算Y 值,并以十六进制形式显示出来,Y 按下列公式计算。 ??? ????===-=+=) 6(2/)5()4(2)3(2222X X X X X X X X X X Y 源代码: data segment x db ? table dw l1,l2,l3,l4tishi db 0ah,0dh,'please input a number from 3to 6:$' jieguo db 0ah,0dh,'the answer is :$' data ends code segment assume cs:code,ds:data

start: mov ax,data mov ds,ax Input:lea dx,tishi mov ah,09h int21h mov ah,1;接受输入 int21h cmp al,36h ja L0 cmp al,33h jl L0 and al,0fh;change input ASCII to number mov x,al sub al,3h;减3,以为输入的是3-6 shl al,1;dw占两个字节,所以需要乘2 mov ah,0 lea bx,table add bx,ax jmp[bx];地址表法实现跳转 l1:mov al,x mul x add al,x;ah=0 jmp output

《汇编语言程序设计》学习总结与心得

《汇编语言程序设计》学习总结与心得 其实说实话在学这门课之前自己对汇编语言一点都不了解,只知道它也是一种语言,而且是一门很少用的语言,可能很多人都是这么想的,或许在学这门课之前不少同学也有和我当初一样的思想,大概学学就好,反正以后很少能用到,毕竟现在高级语言这么发达,而且运用起来灵活易懂,像汇编这种低级语言又难又不易学。或许老师是知道我们之前有这种想法,所以第一节课就跟我们讲解了一下了汇编语言在当今这种高速发展的社会的作用和地位,让我们能够正确的认识汇编语言的精华,正确对待这么课。而且还在课堂了百度了汇编语言的招聘信息,或许这才是使我们正确对待汇编的最直接的原因,关系到我们以后的出路,或许我们学好了一门汇编,以后出去找工作的机会不就更广了吗?正是在这种动力的驱使下我才对汇编语言有了一个新的认识,而且决定要把它学好。 在后来的学习中我发现其实汇编不是很难学,其实学汇编就像学其他的高级语言一样,高级语言要求对语言非常了解。在学汇编的过程中,我们最重要的就是要掌握汇编语言中的指令的一些基本用法。当然要能够真正的了解其中的内涵,这样我们在实际的编程中也能够像运用高级语言一样灵活的变通。汇编语言作为一种低级程序设计语言,既然是低级所以应该是最底层的,与我们计算机内部的结构联系应该联系很密切,而且在我们学习中也深刻的了解到了这一点。比如说后来学到的寄存器、中断、还要各种寻址方式以及进栈出栈,好多的就是设计到计算机硬件。前面几章都是对计算机内部结构和一些常用的指令以及寻址方式的寻址方式。到后面学到子程序以及宏的作用才真正发现到其实跟高级语言差别不大。以C语言为例,C语言不也是由一个一个的函数组成的吗?没想到想汇编这样的低级语言也可以这样。在汇编语言的子程序和宏中,我个人更感觉宏的运用更像我们高级语言的子函数,通过定义好的宏,我们在后面直接调用就可以了。尤其是宏带参数的宏跟C语言中带参数的函数真的很像,根据参数的不同调用宏就能得到不同的结果。而汇编中的子程序没有这个传递参数这个功能。在调用子程序的时候要注意各寄存器中的内容。子程序是在程序执行期间由主程序调用的,它只占有它自身大小的一个空间,他不仅是源程序级别简化,形成的目标代码较短;而宏调用则是在汇编期间展开的,每调用依次进把宏定义体展开一次,它是源程序级的简化。因而它占有的存储空间与调用次数有关,调用次数越多则占有的存储空间越大。如果宏调用次数较多的话,则其空间上的开销也是应该考虑的因素 汇编程序给人感觉最烦的就是好多程序的结果不能直接通过运行EXE文件显示出来,而更多的是经过DEBUG单步调试才能看到其内在变化,看是否正确。在初次接触汇编的几个汇编工具时,有一种神奇的感觉,因为汇编程序不像其他的高级语言一样需要编译器,而是直接的就能在记事本上编写,然后进行汇编和

单片机实验心得体会-(2)

单片机实验心得体会 (生物系统工程高源) 说在最前面的话: 在整个单片的机的实验过程中,我的思维发生了很多改变。 首先是,我没有想到这个机器真的可以将电脑上的代码看起来很简单的转换成电路的通断。虽然这个和我们的手机芯片,电脑CPU比起来还差了很多,但是原理可行,便是越做越复杂越做越小。 其次,这门课真的非常依靠我们的上课是不是认真听,微电子电路精密的实验就是这样,任何一个位置的错误操作或者元器件的损坏都是不可能实现最后的结果的。 同样在后面的文章中我还会谈到语句的选择问题,在这些实验中我渐渐的学会了不套用书本上的语言而使用更多的我的思想。从那个定时装置老师需要我们自己计算两个量的乘积开始探索我们发现了我们可以做的有很多,可以去革新,可以去简化。 最后我们的知识实在还是太渺小了,我们可以学的内容还是有很多的,如果想让单片机这个领域有更好的发展,我们需要去寻找的还有很多。 一、实验一定要内容清晰,思路清晰,弄懂每一行代码。 在单片机的系统中,是像一些我们比较熟知的程序语言一样,有自己的地址,有自己的工作方式和工作顺序,因此我们在设计时是不能出一点差错的,而因为每一行都在进行地址的转换和堆栈的转换,因此我们在实验前一定要充分了解这次实验全部要做的内容。

二、实验过程可改变处多、很多路线可以归结到统一的答案。 我们知道最基础的单片机汇编语言结构形式由顺序结构,分支结构,循环结构组成。在我们完成前面几个实验的时候,我们更多的是用的这些结构的本身。但是后面我们发现,其实在单片机系统中有着更多的方式可以完成同样的目标。 例如,我们同样是完成一个定时,前期可以使用循环进行定时,通过机器时间的计算来设置寄存器中的数字大小。但是当我们开始应用定时器的时候同样可以做到我们想要的工作。而且我们发现定时器在和一些输入输出断口的扩展连接上更好。 上述两个语句就同样是在做定时,但我们可以看到右侧更加严谨,左侧更加基础。我们在实验过程中也可以感受到两者在方便性上的区别:左侧的如果要进行更改,需要对立即数进行更改,而右侧的一方面可以通过立即数的更改,一方面也可以通过修改特殊寄存器上的一些开关量来完成。 因为当汇编的代码长起来之后,保持整个篇幅的整洁是十分重要的,在这个方面,之所以做出特殊寄存器就是这里的优越性,使用一个定时器要比中断子程序容易一些。

汇编语言实验心得

汇编语言实验心得 0 当x=0 -1 当x<05、循环程序设计1)定义10个字节型带符号数,求其和。2)在内存单元DATA中定义一个16位数,统计其16位中1的个数,存入内存的字单元COUNT。3)定义10个字型无符号数,编写程序求其最小值。6、子程序设计1)设计一个子程序,计算1+2+…+N,其中N为给定的正整数,且N小于100。2)定义10个字型带符号数,编写子程序求其最大值和统计正数的个数。3)从键盘接收4位进制数,将其转换为六进制数并显示。二、实验心得上学期学习计算机组成原理的时候就对汇编有所了解,但通过这学期的学习,使我更加深入了解了其知识体系和计算机组成及内部程序执行的原理。对于各命令的熟练掌握后,自己亲自动手实验更是体会到了各命令的用途及执行的方法。通过各个基本命令可以轻松更改计算机内部寄存器的值和读写内存,磁盘,I/O端口的值,通过更改观察其对计算机的影响变化。 对于汇编语言的寻址方式,更是多种多样,通过对各寻址方式的比较,可以感受到各寻址方式的不足与好处,还有是对各寻址方式的注意事项,有的寻址方式需专用的寄存器,有的寄存器是禁止使用的,然而有的就开放的多,对寄存器没有特殊要求,然而在编程过程中使用较为合适的寻址方式是提高程序运行效率的保障,在对寄存器中的值做运算时要正确书写各值,在X86中只支持六进制数,在运算结束后值得保存也是很重要的,不能随

意保存。写数据传送指令时,目的操作数和源操作数的类型一定要匹配,CS不能作为目的操作数。 在学习完汇编语言程序格式和结构后就可以完整的编写汇编语言程序了,在编程中各种结构的选择是对程序效率的保障,在顺序结构中就不需要各种选择分支结构,顺序结构适合一些较简单按顺序执行的程序,然而复杂程序的编写就需要用到选择结构和分支结构了。另外,我们还应该掌握DOS系统功能调用,宏汇编等知识。 现在课程已结束一段时间,虽然不是完全掌握,但是还是了解了一些基本操作,可以解决一些基本问题,想要学好汇编,还需花更多时间去学习。在今后的学习过程中尽可能完善自己。

相关主题
文本预览
相关文档 最新文档