实验2汇编实验

合集下载

实验二拆字、拼字程序

实验二拆字、拼字程序

班级:2学号:姓名:成绩:实验二拆字、拼字程序一实验目的掌握汇编语言设计和调试方法,熟悉键盘操作。

二实验内容1.把2000H的内容拆开,高位送2001H低位,低位送2002H低位,2001H、2002H高位清零,一般本程序用于把数据送显示缓冲区时用。

ORG 0660HSE02: MOV DPTR,#2000HMOVX A,@DPTRMOV B,A;(2000)→A→BSW AP A;交换ANL A,#0FH ;屏敝高位INC DPTRMOVX @DPTR,A;送2001HINC DPTRMOV A,BANL A,#0FH ;(2000)内容屏敝高位MOVX @DPTR,A;送2002HSJMP $END2. 把2000H、2001H的低位分别送入2002H高低位,一般本程序用于把显示缓冲区的数据取出拼装成—个字节ORG 0680HSE03: MOV DPTR,#2000HMOVX A,@DPTRANL A,#0FH ;(2000H)内容屏敝高位SW AP A;交换MOV B,A;保存INC DPTRMOVX A,@DPTR ;(2001H)内容送AANL A,#0FH ;屏敝高位ORL A,B ;或INC DPTRMOVX @DPTR,A;送2002HSJMP $END三实验步骤编译、装载程序,以连续或单步方式运行程序,检查2000~20FFH中执行程序前后的变化。

四思考1.将2000的高低位分别送入3000H、3001H的高位, 3000H、3001H低位清零;ORG 0660HSE02: MOV DPTR,#2000HMOVX A,@DPTRMOV B,A;(2000)→A→BSW AP A;交换ANL A,#0FH ;MOV DPTR,#3000HMOVX @DPTR,A;送3000HINC DPTRMOV A,BANL A,#0FHMOVX @DPTR,A;送3001HEND2.把片内20H,21H的高位拼在一起送到片内30H单元。

微机原理实验2程序字符串匹配实验

微机原理实验2程序字符串匹配实验

8086汇编语言程序实验:实验二、字符串匹配实验题目:1、(必做题)编程实现:从键盘分别输入两个字符串(不必等长),然后进行比较,若两个字符串有相同的字符,则显示“MATCH”,若字符都不相同则显示“NO MATCH”。

2、(选做题)编程实现:从键盘分别输入两个字符串,然后进行比较,若两个字符串的长度和对应字符都完全相同,则显示“MATCH”,否则显示“NO MATCH”。

对应程序如下所示:;第1题;====================================HUICHE MACRO ;定义一个具有回车、换行功能的宏,为程序多次回车换行所调用。

MOV DL,0DH ;用2号功能“显示”回车。

MOV AH,02HINT 21HMOV DL,0AH ;用2号功能“显示”换行。

MOV AH,02HINT 21HENDMDA TA SEGMENTMESSAGE1 DB 'MATCH','$' ;定义“MATCH”提示信息,“$”作为调用9号功能的结束符。

MESSAGE2 DB 'NO MATCH','$' ;定义“NO MA TCH”提示信息。

TISHI1 DB 'Please input the first string:','$' ;提示输入第1个字符串的提示信息。

TISHI2 DB 'Please input the second string:','$' ;提示输入第1个字符串的提示信息。

STRING1 DB 100 ; 100为存第一个字符串的最大可用空间的字节数。

DB ? ;预留字节,存储将要输入的第1个字符串的实际长度。

DB 100 DUP(?) ;预留100个字节空间,用于存放第1个字符串。

STRING2 DB 100DB ?DB 100 DUP(?)DA TA ENDSSTACK SEGMENT ;定义一个50字节大小的堆栈段空间。

实验二-用“李萨如图形法”---课程中心(汇编)

实验二-用“李萨如图形法”---课程中心(汇编)

实验二 用“李萨如图形法” 测量简谐振动的频率一、实验目的1.了解李萨如图形的物理意义规律和特点。

2.学会用“李萨如图形法”测量简谐振动的频率。

二、实验装置图2-1 实验装置框图三、实验原理互相垂直、频率不同的两振动的合成,其合成振动波形比较复杂,在一般情况下,图形是不稳定的。

但当两个振动的频率为整数比时,即可合成稳定的图形,称为李萨如图形。

李萨如图形的形成如图2-2(a)所示,在图2-2(a)中,沿X 、Y 两个方向对两振动信号作两对边框,每对边框各有n x 和n y 两个切点,n x 与n y 之比就等于两个振动周期T x 、T y 之比,即:n y /n x =T y /T x =f x /f y 。

所以。

只要示波器荧光屏上出现了稳定图形,就可根据李萨如图形的规律求出待测频率f 。

1.1/ y x f f 时,振动方程: )2cos(111ϕπ+=t f A x (2-1))2cos(222ϕπ+=t f A y (2-2) 当21ϕϕ=,则21A yA x =,图形为过原点的直线; 当πϕϕ+=21,则21A y A x -=,图形为过原点的直线;当221πϕϕ±=-,则1222212=+A y A x ,图形为以X 、Y 轴为对称轴的椭圆;当21ϕϕ-为其它任意值时,得到的图形是形状各不相同的椭圆。

2.1/≠y x f f 时,合成振动波形不再是椭圆,而是更为复杂的图形。

但是,只要y x f f /是一个有理数,总能形成一个稳定的图形。

例如,2/=y x f f 时,图为“8”形,这表明,当Y 轴变化了一个正峰和一个负峰,则X 轴变化了两个正峰和两个负峰。

2/1/=y x f f 时,图形为“∞”形,这表明,当Y 轴变化了两个正峰和两个负峰,则X 轴变化了一个正峰和一个负峰。

李萨如图形的原理可以直观地同图解法来证明。

由图2-2(a)可以看出:当4/21πϕϕϕ=-=时,示波器上的图形是一斜椭圆;当ϕ由0变到2/π时,图形则由一根斜直线经斜椭圆变为正椭圆;当ϕ继续增加,则又变为斜椭圆,但椭圆的长轴所在象限由I 、Ⅲ象限变为Ⅱ、Ⅳ象限;当ϕ增至π时,图形又变为斜直线。

实验二用机器指令和汇编指令编程实验总结

实验二用机器指令和汇编指令编程实验总结

实验二用机器指令和汇编指令编程实验总结下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。

文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!实验二用机器指令和汇编指令编程实验总结1. 引言在本实验中,我们学习了使用机器指令和汇编指令编程的基本概念和技能。

实验2-寻找最大数最小数

实验2-寻找最大数最小数

实验一、寻找最大数最小数实验吴艳红 11283019一、实验目的1、学习循环程序结构,掌握编写循环处理程序的方法和技巧。

2、通过循环结构程序熟悉汇编语言程序设计的主要方法。

3、了解和掌握程序设计过程中算法的选择。

4、掌握汇编语言调试方法。

二、实验题目以buff开始的内存单元中有10个有符号数(字节型DB):-37、28、-115、-2、98、-100、93、120、56、-99请编写程序,找出最大的数并存入MAX单元中,同时也找出最小的数并存入MIN单元中,在Debug下运行程序,查看数据区MAX和MIN的内容检验运行结果。

三、实验过程1、新建一个.txt文件,在文件中编辑寻找最大数最小数的源程序代码,并以max——min.asm命名保存,程序代码见附。

2、用MASM 文件汇编源程序,C>masm max_min.asm; 生成目标文件max_min.obj和max_min.lst。

3、用LINK连接程序,C>link max_min; 形成max_min.exe文件。

结果见截图1:截图14、在DEBUG调试环境下调试并运行max_min.exe程序。

C>debug max_min.exe,首先用R指令,后使用U指令查看编写的程序结果见截图2截图2单步执行完命令后,用 D DS:0 检查数据区MAX及MIN内容,检查结果是否正确。

见截图3:已知78H为最大数,8DH为最小数,说明程序运行结果正确。

截图3四、实验过程遇到的问题以及解决办之前一直在尝试利用加法将ASCII码转换成字符输出,结果总是出现乱码,经过仔细的考虑和认真的尝试之后,终于发现了问题所在:本组给定的数据为-37、28、-115、-2、98、-100、93、120、56、-99,当把最大数还有最小数输入到寄存器DL中用以输出时,数据以补码的形式保存,可是数据默认是ASCII码,每一个ASCII码对应一个字符,所以当存入数据78H时,表示ASCII码的120位字符x,即输出x,而不是78H,如果提出改进,将BUF 的输入值改为0,1,2,3,4,5,6,7,8,9十位数时,经过ASCII码与字符的转换,即在ASCII 码的基础上加一个30H,那么就将数字转换成了相应的字符,如截图4,即为修改后的运行结果截图:输出结果为0和9,结果正确。

高中生物必修一必修二必修三

高中生物必修一必修二必修三

高中生物必修一必修二必修三篇一:高中生物必修2——必修3重点实验汇编高中生物必修1——必修3实验汇编必修一《分子与细胞》﹡实验一用显微镜观察多种多样的细胞P7取镜安放→对光→放置玻片标本→低倍找物像→移中央→换高倍镜→调细准焦螺旋→高倍观察→收放(1)低倍镜使用:(观察任何标本都必须先用低倍镜,且标本应透明)(2)高倍镜使用:先使用低倍镜确定目标→移动装片,使目标位于视野中央→转动转换器,换用高倍镜→调焦(转动细准焦螺旋)(视野较暗,可调反光镜或光圈) 2、显微镜使用注意事项:(1)成像特点:放大倒立的虚像,物象移动方向与载玻片移动方向相反(2)放大倍数计算:物镜的放大倍数×目镱的放大倍数。

放大倍数指的是物体的长或宽。

(3)低倍镜下成像特点:物像小、细胞数目多、视野亮。

高倍镜下成像特点:物像大、细胞数目少、视野暗。

(4)放大倍数的判断方法:目镜:镜头长放大倍数小,镜头短放大倍数大。

物镜:镜头长放大倍数大,镜头短放大倍数小。

物镜与装片之间的距离:距离近放大倍数大,距离远放大倍数小。

(5)判断污物所在位置:分别移动载玻片、物镜和转动目镜,观察污物是否移动来判断。

(来自: 小龙文档网:高中生物,必修一,必修二,必修三)(6)低倍镜使用过程中,下降镜筒时必须双眼侧视镜筒,防止镜头撞到玻片。

低倍镜找到物像后,换上高倍镜时,观察过程中只能使用细准焦螺旋。

﹡实验二检测生物组织中还原糖、脂肪和蛋白质P181、原理:化学试剂能使生物组织中的有关有机物产生特定的颜色反应。

还原性糖(单糖、除蔗糖外的二糖)+斐林试剂 + 水浴加热:砖红色沉淀脂肪+苏丹Ⅲ:橘黄色淀粉+碘:蓝色(而非沉淀)脂肪+苏丹Ⅳ:红色(显微镜观察)蛋白质+双缩脲试剂:紫色反应(而非沉淀) 2、还原糖的检测还原性糖:有还原性基团—游离醛基或酮基的糖;如单糖(葡萄糖、果糖等)、二糖(麦芽糖、乳糖等)非还原性糖:多糖(淀粉、纤维素、糖原)、蔗糖(1)材料:还原糖含量高,白色或近于白色,如苹果,梨,白萝卜、葡萄(甘蔗、甜菜、绿叶不可!)(2)试剂:斐林试剂(甲液:0.1g/mL的NaOH溶液,乙液:0.05g/mL的CuSO4溶液),现配现用。

实验2-用户登录验证程序的实现

实验2-用户登录验证程序的实现
DEC COUNT ;可尝试次数-1 JZ EXIT ;如果次数用完则退出 JMP U_MODULE
P_MODULE: MOV AH,2 ;换行 MOV DL,0AH INT 21H
MOV AH,09H ;DOS显示提示字符串 MOV DX,OFFSET PASSWORD INT 21H
MOV BX,OFFSET BUF1 MOV CX,LLL MOV COUNT,3
五、支撑毕业要求指标点
目标 3.1 使学生了解微型计算机硬件结构和微型计算机工作原理,掌握 Intel X86 指令系统。使学 生能够将掌握的软硬件相关工程基础知识,用于分析微型计算机及应用领域的相关工程问题。 目标 3.2 使学生掌握汇编语言程序设计方法,具备汇编语言程序开发能力,能够根据实验方案,配置 实验环境、开展实验,进行数据分析与处理,综合实验结果以获得合理有效的结论。
U_MODULE: ;用户名模块
3
MOV AH,09H ;DOS显示字符串 MOV DX,OFFSET MESG1 ;取偏移地址 INT 21H
MOV AH,0AH ;等待从键盘输入的字符串(在屏幕上显示),并保存在缓 冲区
MOV DX,OFFSET BUF;DX=缓冲区首地址 INT 21H
;判断用户名是否正确 MOV DI,OFFSET BUF+2 MOV SI,OFFSET USER CLD
10
六、指导教师评语 (含学生能力达成度的评价)
成绩
批阅人
日期
评分项 评 遵守实验室规章制度
学习态度
算法思想准备情况
程序设计能力

解决问题能力
课题功能实现情况
算法设计合理性
算法效能评价
回答问题准确度

汇编语言-第二版-王爽-完整答案

汇编语言-第二版-王爽-完整答案

汇编语言-第二版-王爽-完整答案第1章基础知识检测点1.1(1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为13。

(2)1KB的存储器有1024个存储单元。

存储单元的编号从0到1023。

(3)1KB的存储器可以存储1024*8个bit,1024个Byte。

(4)1GB、1MB、1KB分别是2^30、2^20、2^10 Byte。

(n^m的意思是n的m次幂)(5)8080、8088、80286、80386的地址总线宽度分别是16根、20根、24根、32根,则它们的寻址能力分别为:64(KB)、1(MB)、16(MB)、4(GB)。

(6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。

则它们一次可以传送的数据为:1(B)、1(B)、2(B)、2(B)、4(B)。

(7)从内存中读取1024字节的数据,8086至少要读512次、80386至少要读256次。

(8)在存储器中,数据和程序以二进制形式存放。

第2章寄存器答案检测点2.1(1) 写出每条汇编指令执行后相关寄存器中的值。

mov ax,62627 AX=F4A3Hmov ah,31H AX=31A3Hmov al,23H AX=3123Hadd ax,ax AX=6246Hmov bx,826CH BX=826CHmov cx,ax CX=6246Hmov ax,bx AX=826CHadd ax,bx AX=04D8Hmov al,bh AX=0482Hmov ah,bl AX=6C82Hadd ah,ah AX=D882Hadd al,6 AX=D888Hadd al,al AX=D810Hmov ax,cx AX=6246H(2) 只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。

解:mov ax,2add ax,axadd ax,axadd ax,ax检测点2.2(1) 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为00010H到1000FH。

汇编语言实验二查找匹配字符串

汇编语言实验二查找匹配字符串

汇编语言实验二查找匹配字符串一、目的查找匹配字符串SEARCH二、实验内容程序接收用户键入的一个关键字以及一个句子。

如果句子中不包含关键字则显示‘NO match!’;如果句子中包含关键字则显示‘MATCH’,且把该字在句子中的位置用十六进制数显示出来。

流程图N YY Y输入关键字结束关键字长度=0输入句子句子长度<关键字长度Y保存关键字长度到cx ,cx 入栈,保存总循环次数(句子长度-关键字长度+1)到al ,将句子的首地址放进bx(作为基址寄存器) si=di=0(变址寄存器)开始比较[bx+di]与[si]是否相等si+1,di+1,cx-1(同时指向下一个字符)YN bx+1(句子指向下一个字符) cx 出栈,再入栈,si,di 清零,al-1 cx 是否为0N 匹配完成,调用子程序输出al 是否为0 不匹配,输出三、设计和编码DATA SEGMENTmess1 DB'Enter keyword:','$'mess2 DB'Enter Sentence:','$'mess3 DB'Match at location:','$' mess4 DB'NOT MATCH.',13,10,'$' mess5 DB'H if the sentence',13,10,'$'change DB 13,10,'$'stoknin1 label bytemax1 db 10act1 db?stokn1 db 10 dup(?)stoknin2 label bytemax2 db 50act2 db?stokn2 db 50 dup(?)DATA ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODE SEGMENT;*************************************代码段main proc farassume cs:code,ds:data,es:dataSTART:push dssub AX,AXsub BX,BXsub DI,DIsub SI,SIpush AX ;为返回dos并清空后面要用到的寄存器MOV AX,DATAMOV DS,AXLEA DX,mess1MOV ah,09INT 21h ;输出Enter keywordLEA DX,stoknin1MOV ah,0ah ;用21号中段的0ah号功能获取关键字INT 21hcmp act1,0je exit ;如果为空直接退出程序a10:;********************************输入Sentence并判断LEA DX,changeMOV ah,09INT 21h ;输出回程,换行LEA DX,mess2MOV ah,09INT 21h ;输出Enter Sentence:LEA DX,stoknin2MOV ah,0ahINT 21h ;用21号中段的0ah号功能获取句子MOV AL,act1CBWMOV CX,AX ;保存关键字长度到cxPUSH CX ;cx入栈MOV AL,act2cmp AL,0je a50 ;保存句子长度到al,若句子为空则跳转显示not match SUB AL,act1js a50 ;若句子长度小于关键字长度,则跳转显示not match INC ALCBWLEA BX,stokn2 ;将句子的首地址放进BXMOV DI,0MOV SI,0a20:;****************************************比较,内循环MOV AH,[BX+DI]CMP AH,stokn1[SI] ;遇见字符不相等就跳转到a30jne a30INC DIINC SIDEC CX ;没遇到一个相等的字符,cx-1,cx不为0则比较下一个字符,当cx为0是说明关键字比较完CMP CX,0je a40jmp a20a30:;*****************************************外循环,BX+1,清空si,di继续内循环比较INC BXDEC ALcmp AL,0je a50MOV DI,0MOV SI,0POP CXpush CXjmp a20a40:;*****************************************match,将bx减去句子的首地址加一得到关键字所在位置,调用二进制转十六进制子函数将位置输出SUB BX,offset stokn2INC BXLEA DX,changeMOV ah,09INT 21hLEA DX,mess3MOV ah,09INT 21hCALL btohLEA DX,mess5MOV ah,09INT 21hjmp a10;****************************************二进制转换十六进制btoh PROC NEARMOV CH,4rotate: MOV CL,4ROL BX,CLMOV AL,BLand AL,0fhadd AL,30hcmp al,3ahjl printitadd al,7hprintit:MOV dl,alMOV ah,2int 21hdec chjnz rotateretbtoh endpa50:;*****************************************显示not matchLEA DX,changeMOV ah,09INT 21hLEA DX,mess4MOV ah,09INT 21hjmp a10exit:retmain endpCODE ENDSEND START 四、运行结果及分析五、实验小结六、附录(选)。

汇编实验报告(实验二)

汇编实验报告(实验二)

实验二循环与子程序程序设计一、实验目的1)加深对循环结构的理解。

2)掌握循环程序的设计方法。

3)学习子程序的定义和调用方法。

4)掌握子程序、子程序的嵌套、递归子程序和结构。

5)掌握子程序设计、编制及调试。

6)熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。

二、实验内容3)编制在屏幕上显示九九乘法表的程序。

4)编制在屏幕上显示用*组成的三角形的程序。

6)编写一个递归子程序,计算指数函数Xn的值,其中X,n从键盘输入。

三、程序内容3)data segmentdata endscode segmentassume cs:code;ds:datastart:mov ax,datamov ds,axmov bl,30hmov bh,31hmov cl,blone:add bl,1mov dl,blmov ah,2int 21hmov dl,'*'mov ah,2int 21hmov dl,bhmov ah,2int 21hmov dl,'='mov ah,2int 21hand bl,0fhand bh,0fhmov al,bhimul blmov ah,0hmov ch,0ahidiv chmov dh,ahadd al,30hcmp al,30hjz threetwo:mov dl,almov ah,2hint 21hadd dh,30hmov dl,dhmov ah,2int 21hadd bl,30hadd bh,30hmov dl,20hmov ah,2int 21hcmp bl,bhjl onemov dl,0ahmov ah,2int 21hmov dl,0dhmov ah,2int 21hmov bl,cladd bh,1hcmp bh,3ahjl onejmp exitthree:mov al,20hjmp twoexit:mov ah,4chint 21hcode endsend start4)code segmentassume cs:code,ds:data,ss:stackstart:mov al,1mov bl,1l:add al,30hmov dl,almov ah,02hint 21hpush ax mov dl,'*' mov ah,02h int 21hpop ax push axadd bl,30h mov dl,bl mov ah,02h int 21hpop ax push ax mov dl,'=' mov ah,02h int 21hpop axsub al,30h sub bl,30h push bx push axmul blcall result mov dl,' ' mov ah,02h int 21hpop axpop bxinc alcmp al,bl jbe lmov dl,0ah mov ah,02h int 21hmov dl,0dh mov ah,02h int 21hcmp bl,8ja kmov al,1inc bljmp lk:mov ah,4ch int 21hresult:mov cx,0 aaaa:mov bx,10mov dx,0div bxpush dxinc cxmov dx,0cmp ax,0jne aaaabbbb:pop bxjmp lastcccc:last:cmp bx,39hja aboveadd bl,30hmov dl,blmov ah,02hint 21hloop bbbbretabove:add bx,37hmov dl,blmov ah,02hint 21hloop bbbbcode endsend start四、实验结果3)4)。

高中化学无机物的性质实验汇编

高中化学无机物的性质实验汇编

高中化学无机物的性质实验汇编黑龙江鸡西市第一中学王维德一、氢元素单质及其化合物实验1:球形干燥管中装有碱石灰干燥剂。

导管口蘸些肥皂水,控制氢气流速,吹出肥皂泡。

当肥皂泡吹得足够大时,轻轻摆动导管,让肥皂泡脱离管口,观察现象。

现象与解释:肥皂泡迅速上升,说明氢气比同体积的空气轻。

实验2:在带尖嘴的导管口点燃纯净的氢气,观察火焰的颜色。

然后在火焰的上方罩一个冷而干燥的烧杯,过一会儿,观察烧杯壁上有什么现象发生。

现象与解释:纯净的氢气在空气中安静地燃烧,产生淡蓝色火焰。

用烧杯罩在火焰的上方时,烧杯壁上有水珠生成,接触烧杯的手能感到发烫。

氢气在空气里燃烧,实际上是氢气跟空气里的氧气发生了化合反应,生成了水并放出大量的热。

实验3:取一个一端开口,另一端钻有小孔的纸筒,用纸团堵住小孔,用向下排空气法收集氢气,使纸筒充满氢气。

移开氢气发生装置,拿掉堵小孔的纸团,用燃着的木条在小孔处点火,注意有什么现象发生。

现象与解释:刚点燃时,氢气安静地燃烧,过一会儿,突然发生爆炸,听到“砰”的声音。

点燃前,纸筒内是纯净的氢气,遇火燃烧。

随着氢气的消耗,空气不断从纸筒底部进入筒内,筒内的气体变成氢气和空气的混合物,这种混合气体遇火发生了爆炸。

实验4:在干燥的硬质试管底部铺一层黑色的CuO,管口微向下倾斜。

通入氢气,过一会儿,再给CuO加热。

反应完全后,继续通入氢气,直到试管冷却。

现象与解释:黑色的氧化铜逐渐变为亮红色固体,同时管口有水滴生成。

氢气还原氧化铜生成了铜和水。

二、碳族元素实验1:把石墨电极或铅笔芯和导线连在一起,接通电源后,灯泡是否发亮?现象与解释:灯泡发亮,说明石墨能导电。

实验2:参考右图所示装置,制一个净水器,并完成实验。

现象与解释:混有红墨水的水变为无色,说明木炭(活性炭)具有吸附性。

实验3:把木炭加热到发红,伸进盛有氧气的集气瓶里,注意木炭在空气里和在氧气里燃烧有什么不同。

燃烧停止后,立即向瓶内倒入一些澄清的石灰水,振荡,观察现象。

汇编语言程序设计2

汇编语言程序设计2

目录系统认识 (1)实验一数码转换编程及程序调试 (5)实验二运算类编程实验 (11)实验三分支程序、循环程序设计实验 (16)实验四子程序设计实验 (22)实验五显示程序实验 (26)实验六串行通讯应用实验 (27)附录WMD86 联机软件使用说明 (40)系统认识一、实验目的掌握TD-PITE微机原理与接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。

二、实验设备PC微机一台,TD-PITE实验装置一套。

三、实验内容编写实验程序,将00H~0FH共16个数写入内存3000H开始的连续16个存储单元中。

四、实验步骤1. 运行Wmd86软件,进入Wmd86集成开发环境。

2. 根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言,如图1所示。

语言选择后,下次再启动软件,语言环境保持这次的修改不变。

在这里,我们选择汇编语言。

图13. 语言选择后,点击新建或按Ctrl+N组合键来新建一个文档,如图2所示。

默认文件名为Wmd861。

图24. 编写实验程序,如图3所示,并保存,此时系统会提示输入新的文件名,输完后点击保存。

图3程序:SSTACK SEGMENT STACK ;定义堆栈段DW 32 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODE, SS:SSTACKSTART: PUSH DSXOR AX, AXMOV DS, AXMOV SI, 3000H ;建立数据起始地址MOV CX, 16 ;循环次数AA1: MOV [SI], ALINC SI ;地址自加1INC AL ;数据自加1LOOP AA1AA2: JMP AA2CODE ENDSEND START5. 点击,编译文件,若程序编译无误,则输出如图4所示的输出信息,然后再点击进行链接,链接无误输出如图5所示的输出信息。

图4图56. 连接PC与实验系统的通讯电缆,打开实验系统电源。

汇编语言实验报告

汇编语言实验报告

实验一汇编程序的汇编及运行1.实验目的和要求1、熟悉汇编程序的汇编、连接、执行过程2、生成LST文件,查看LST文件3、生成OBJ文件,修改语法错误4、生成EXE文件5、执行2.实验环境IBM—PC机及其兼容机实验的软件环境是:操作系统:DOS 2.0以上;调试程序:;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。

3.实验内容及实验数据记录1、将数据段输入,取名1.txt,保存在MASM文件夹下。

生成LST文件,(不必连接、运行)用EDIT查看1.LST文件。

试回答:DA1,DA2的偏移量分别是多少?COUNT的值为多少?DATA SEGMENTORG 20HNUM1=8NUM2=NUM1+10HDA1 DB ‘IBM PC’DA2 DB 0AH, 0DHCOUNT EQU $-DA1DATA ENDSEND2、输入有错误的文件,修改错误语句。

(MASM没有出现错误即可。

不必连接、运行。

)DATA SEGMENTVAR1 DB 0, 25, ODH, 300VAR2 DB 12H, A4H, 6BHVAR3 DB ’ABCDEF’VAR4 DW 1234H, 5678HVAR5 DW 10H DUP(?)DATA ENDSCODE SEGMENTASSUME CS: CODE, DE: DATA BEING MOV AX, DATAMOV DS, AXLEA SI, VAR5MOV BX, OFFSET VAR2MOV [SI], 0ABHMOV AX, VAR1+2MOV [BX], [SI]MOV VAR5+4, VAR4MOV AH, 4CHINT 21HCODE ENDSEND START3、输入正确的程序,汇编、连接、运行STACKS SEGMENT STACKDW 128 DUP(?)STACKS ENDSDATAS SEGMENTSTRING DB ‘WELCOME!’, 13, 10, ‘$’DATAS ENDSCODES SEGMENTASSUME CS: CODES, DS: DATASSTART:MOV AX, DATASMOV DS, AXLEA DX, STRINGMOV AH, 9INT 21HMOV AH, 4CHINT 21HCODES ENDSEND START4.算法描述及实验步骤(1)编写源程序。

实验2_多字节整数加减法

实验2_多字节整数加减法

实验二ARM的多字节整数加减法一、实验目的:●掌握ARM汇编语言程序设计和调试方法;●熟悉Embest IDE集成开发环境的操作方法。

二、实验原理:ARM处理器具有很强的算术逻辑运算功能,算术指令可以实现32位有符号数和无符号数的加法和减法操作。

其语法为:<Opcode>{<cond>}{S} Rd,Rn,N从上表可以看出,ADD和SUB是最简单的加减运算。

ADC和SBC是带进位标志的加减运算,对于SBC,若进位标志为0,则结果减1。

RSB是反减,即用第2操作数减去源操作数,由于第2操作数可选的范围宽,故这条指令很有用。

RSC是带进位标志反减,若进位标志为0,则结果减1。

在ARM指令集中,通过设置S位(第20位),可以直接控制指令的执行是否影响条件码。

当S位为0时,条件码不改变;当S位为1时(且Rd不是R15(PC)),条件码改变。

另外,在算术指令和逻辑指令中广泛使用的第2操作数移位功能,是ARM指令集的一个非常显著的特征。

这样可以在操作数进入ALU之前,对操作数进行指定位数的左移或右移(即乘“2”或除“2”)。

这种功能明显增强了许多数据处理操作的灵活性。

三、实验内容:●完成两个128位无符号整数加法程序。

●观察寄存器中的内容,检验实验结果是否正确。

●改变两个128位加数和被加数的值,观察CPSR中标志位的变化。

四、实验步骤:1.在Embest IDE环境中新建工程,编写程序;2.编译成功后,连接下载进行调试。

3.观察程序运行结果。

五、实验参考程序.global _start.text.arm_start:MOV R0, #0x10MOV R1, #0x1000000AMOV R2, #0x00MOV R3, #0x6000000DMOV R5, #0x1000000AMOV R6, #0x00MOV R7, #0x6000000DADCS R0, R0, R4ADCS R1, R1, R5ADCS R2, R2, R6ADCS R3, R3, R7 stop:B stop.end实验结果截图:六、思考题:完成两个128位无符号整数减法程序。

汇编实验2

汇编实验2

汇编实验2.1-2.4软件工程20091120183 李铮2.1数据传送指令的使用1.实验目的:负责把数据、地址或立即数传送到寄存器、存储单元以及I/O端口,或从内存单元、I/O端口中读取数据。

可以分为下面几类:1. 通用传送指令:MOV,PUSH,POP,XCHG,XLA T2. 输入输出指令指令: IN,OUT3. 目的地址传送指令: LEA,LDS,LES4. 标志位传送指令: LAHF,SAHF,PUSHF,POPF2.实验步骤:1. 传送指令1)用A命令在内存100H处键入下列内容:MOV AX,1234MOV BX,5678XCHG AX,BXMOV AH,35MOV AL,48MOV DX,75ABXCHG AX,DX2)用U命令检查键入的程序并记录,特别注意左边的机器码。

3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。

并注意标志位有无变化。

2.改变标志寄存器psw中tf标志的状态(0——1或1——0),其余位保持不变。

3. 设DS=当前段地址,BX=0300H,SI=0002H,请用DEBUG的命令将存储器偏移地址300H~304H连续单元顺序装入0AH,0BH,0CH,0DH,0EH。

在DEBUG状态下使用A 命令送入下面程序,并用单步T命令执行的方法,分析每条指令源地址的形成过程?当数据传送每完成一次,试分析AX寄存器中的内容是什么?程序清单如下:MOV AX,BXMOV AX,0304HMOV AX,[0304H]MOV AX,[BX]MOV AX,0001[BX]MOV AX,[BX][SI]HLT4. 使用标志位传送指令,编程序段将标志位寄存器的低八位的值存入内存单元DS:1000H 中或堆栈中,然后将标志位寄存器的低八位置位为10101010。

2.2算术逻辑运算和移位指令的使用1.实验目的:使用算术逻辑运算和移位指令,可以实现对二进制数据的加、减、乘、除等四则运算,与、或、非、异或等逻辑运算,以及移位运算和代码转换运算。

实验二 汇编语言程序上机过程及调试

实验二    汇编语言程序上机过程及调试

实验报告二课程微机原理实验名称汇编语言程序上机过程以及调试第页专业电子信息班级__ __ 学号_ __ 姓名实验日期:2014 年 3 月10 日报告退发(订正、重做)一、实验目的学习汇编语言程序设计的基本步骤,即编辑(EDIT)程序、汇编(MASM)、连接(LINK)和运行,使对汇编语言程序设计有一个初步的认识。

二、实验内容1、学习使用全屏幕文本编辑软件EDIT。

用EDIT输入一段给定的源程序。

2、用MASM对已存盘的源程序进行汇编,形成目标文件(.OBJ);如有错误,再返回到EDIT进行修改。

3、用LINK对上述形成的目标文件进行连接,形成可执行文件(.EXE)4、在DOS提示符下运行该可执行文件。

[汇编语言程序的编写格式]汇编语言程序一般由几个段组成,它们分别是堆栈段,数据段,代码段。

任何一个源程序至少必须有一个代码段和一条作为源程序结束的伪指令END。

段的定义有两种格式,分述如下:1,完整的段定义格式:一个段由段头,段体,段尾组成,形式如下:段名SEGMENT[定位类型][组合类型][‘类别’]……段名ENDS其中SEGMENT后的参数一般可省略,详细说明参阅后面的有关章节。

2,简化的段定义格式(MASM5.0版本提供)每段以.开始后跟固定的段名,一般形式如下:DOSSEG.MODEL 存储类型;“存储类型”可选择为SMALL。

.STACK[大小];堆栈段,“大小”指定堆栈的字节数。

.DATA;数据段。

.CODE[名字];代码段;一般只有一个代码段,名字可缺少……例1:用完整的段定义编写一源程序。

NAME EXAM1;可以省略DATA SEGMENT;定义数据段,以下是数据段的内容STR1 DB “HELLO,WELCOME!”,13,10,‘$’STR2 DB “DO YOU LIKE COMPUTER?(Y/N)”,13 10,‘$’STR3 DB “NICE!”,13,10,‘$’STR4 DB “SORRY!”,13,10,‘$’STR5 DB “UNKNOW,ANSWER AGAIN!(Y/N)”,DB 13,10,‘$’STR6 DB “SEE YOU NEXT TIME!”,13,10,‘$’DA TA ENDS ;数据段结束CODE SEGMENT ;定义代码段ASSUME CS:CODE;DS:DATA;以下是代码段内容START:MOV AX,DA TA;给数据段寄存器赋值MOV DS,AXMOV AH,9;显示一字符串的功能号MOV DX,OFFSET STR1;显示字符串STR1的偏址INT 21H;DOS功能调用ASK :MOV DX,OFFFSET STR2;显示字符串STR2INT 21HMOV AH,1;键盘输入一字符的功能号INT 21H;键入的字符ASCⅡ码在ALNOT AL;求反TEST AL,‘Y’;是否按下‘Y’或‘y’键JE NEXT1TEST AL,‘y’JE NEXT1TEST AL,‘N’;是否按下‘N’键或‘y’键JE NEXT2TEST AL, ‘n’JE NEXT2MOV DX,OFFSET STR5;不是按上述键MOV AH,9INT 21HJMP ASK;再返回ASKNEXT1:MOV DX,OFFSET STR3;是按下‘Y’或‘y’键MOV AH,9INT 21HJMP BYENEXT2:MOV DX,OFFSET STR4;是按下‘N’或‘n’键MOV AH,9INT 21HBYE:MOV DX,OFFSET STR6INT 21HMOV DL,7;喇叭响的ASCⅡ码MOV AH,2INT 21HMOV AH,4CH;退回DOSINT 21HCODE ENDS;代码段结束END START;源程序结束注:源程序中的每一行注释语句前一定要加分号‘;’,下同。

汇编语言实验报告2 - 寻址方式的综合应用及转移指令的原理

汇编语言实验报告2 - 寻址方式的综合应用及转移指令的原理

一、实验目的1.定位内存单元的寻址方式汇总2.寻址方式的综合应用3.转移指令的分类和原理4.熟悉在显存中编程的方法二、实验内容及要求(一)寻址方式的汇总及综合应用1. 定位内存单元的寻址方式有几种,并举例说明。

2. 寻址方式在结构化数据访问中的应用。

Power idea公司从1975年成立一直到1995年的基本情况如下。

年份收入(千美元) 雇员人均收入(千美元) 1975 16 3 ?1976 22 7 ?1977 382 9 ?1978 1356 13 ?1979 2390 28 ?1980 8000 38 ?M1995 5937000 17800 ?下面的程序中,已经定义好了这些数据:assume cs:codesgdata segmentdb '1975','1976','1977','1978','1979','1980','1981','1982','1983'db '1984','1985','1986','1987','1988','1989','1990','1991','1992'db '1993','1994','1995';年份dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514dd345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000 ;公司总收入dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226 dw 11542,14430,15257,17800;公司雇员人数data endstable segmentdb 21 dup('year summ ne ??')table ends编程,将data段中的数据按如下格式写入到table段中,并计算21年中的人均收入(取整),结果也按照下面的格式保存在table段中。

汇编语言试验指导

汇编语言试验指导

实验指导一.上机实验的一般步骤和要求:1.上机前对选定的实验题应有所了解,并写好程序。

2.上机过程中对重要方法和步骤、问题和结果应有记录。

3.所有程序原则上都要通过调试手段运行。

4.实验后进行分析和总结,给出实验报告。

二.实验报告的内容一般有:1.实验题的内容及要求。

2.思路和方法、算法描述及有注释和说明的程序清单。

3.程序调试和运行的重要步骤、问题和结果。

4.分析和总结。

三.实验环境的建立参看第二章第一节。

通常在WINDOWS XP系统下。

如果其他操作系统(如WIN 7),不支持汇编程序工作,可安装Masm for Windows集成实验环境asm20125(支持Win2000、WinXP、WinVISTA、WIN7等操作系统)。

/实验1 上机过程及程序调试实验目的:1.通过第二章两个简单实例认识汇编语言程序,初步了解程序格式;段定义;标号;DOS系统功能;操作数;指令;说明语句等作用。

2.掌握汇编语言程序从设计到形成可执行程序文件的方法和步骤。

即编辑、汇编、连接。

了解汇编语言的系统工作文件和工作环境。

理解汇编程序和连接程序的作用。

理解列表文件内容。

3.初步了解程序的运行和调试方法。

学会使用DEBUG主要命令和常用的DOS命令。

实验内容:【1】编辑第二章两个简单实例,通过汇编、连接。

【2】用DEBUG对hello程序进行调试。

问题:(1) 该程序在内存中的起始地址是多少?结束地址是多少?共占几个字节?(2) 0B63:0008表示什么意思?(3) 程序中定义的串‘HELLO, WORLD !$’在内存中的起始地址是多少?请用DEBUG命令显示该串。

(4) 如果用带有断点的G命令运行该程序,写出命令。

(5) 用P命令单步执行程序。

(6) 用T命令跟踪程序,在跟踪执行INT 21时出现什么问题?(7) 用A命令在偏移地址100H处建立该段程序,并运行。

(8) 用W命令把该段程序写成文件,再调入。

实验2 算术及位串处理程序实验目的:掌握多数位的算术运算、移位操作、字符串操作等程序的设计,学习使用分支与循环等基本编程方法,熟练使用DEBUG。

实验二-简单并行接口-实验报告

实验二-简单并行接口-实验报告
2、编程从键盘输入一个字符或数字,将其ASCⅡ码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性。
3、按下面图二简单并行输入接口电路图连接电路(74LS244插通用插座,74LS32用实验台上的“或门”)。74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0~K7,8个数据输出端分别接数据总线D0~D7。
4、用逻辑电平开关预置某个字母的ASCⅡ码,编程输入这个ASCⅡ码,并将其对应字母在屏幕上显示出来。
图一 图二
三、实验中使用到的程序
对于简单并行输出接口:
stack1 segment stack 'stack'
dw 32 dup(0)
stack1 ends
data segment
baseport equ 0ec00h-280h;实际基址
信 息 学 院
《汇编语言与接口技术》上机实验报告
学号:104100197
姓名:王飞
班级: 计科10C
课程名称: 汇编语言与接口技术
上机内容 简单并行接口
实验性质: □ 综合性实验 □ 设计性实验 ■ 验证实验
实验时间: 2012年5 月18 日
实验地点:睿智4号102室
实验设备 TPC—2003A微机实验箱
out dx,al
mov ah,2
mov dl,0dh
int 21h
mov ah,2
mov dl,0ah
int 21h
jmp again
exit: mov ah, 4ch
int 21h
code ends
end start
对于简单并行输入接口:
stack1 segment stack'stack'
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数学与软件科学学院实验报告
学期:2017至 2018第 2 学期 2018年4月4日
课程名称: 汇编语言专业:信息与计算科学班级: 2015级_5班
实验编号:2实验项目:编程、编译、链接、跟踪
指导教师:冉茂华
姓名:黄玉含学号:2015060512实验成绩:
一、实验任务
1、将下面的程序保存为 p1.asm 文件,将其生成克执行文件 p1.exe。

assume cs: codesg
codesg segment
mov ax,2000h
mov ss,ax
mov sp,0h
add sp,10h
pop ax
pop bx
push ax
push bx
pop ax
pop bx
mov ax,4c00h
int 21h
codesg ends
end
2、用 Debug 跟踪 p1.exe 的执行过程,写出每一步执行后,相关寄存器中的内容和栈顶的内容。

3、PSP 的头两个字节是 CD 20,用 Debug 加载 p1.exe,查看 PSP 的内容。

二、实验步骤及结果分析
1、将下面的程序保存为 p1.asm 文件,将其生成克执行文件 p1.exe。

(1)编辑:
(2)编译:
简化版:
实验结果:产生目标文件.obj (3)链接:
简化版:
实验结果:产生可执行文件.exe (4)执行:
结果分析:○1源程序包含:汇编指令和伪指令,伪指令由编译器,汇编指令有一一对应的机器指令,所以可以由机器执行。

○2asumme 表示:假设,将程序段与段联系起来,这里是
将程序段和代码段联系。

○3cs:xxx 表示:这里将xxx名字的程序段是一个代码段
○4xxx segment表示:xxx段从这里开始,同理 xxx ends
表示:xxx段从此结束
○5end表示:程序的结束。

○6mov ax,4c00h int 21h表示:程序返回。

相当于c
语言里面的return
○7一段程序要经过编辑、编译、链接、执行
2、用 Debug 跟踪 hyh.exe 的执行过程,写出每一步执行后,相关寄存器中的内容和栈顶的内容。

首先将内存2000A-2000D 设做:f 33 44 55
实验结果:该代码的作用是交换ax,bx的值
结果分析:○1ss表示栈段,sp表示栈顶指针。

即ss:sp指向的内存单元是符合栈的运算规则
○2push:sp=sp-2;将寄存器里面的值放入栈中
Pop:将栈内的值放入寄存器;sp=sp+2,此时内存里面地址对应的值不变,只是刚刚那里已经不是栈了,不能使用栈的运算规则。

3、PSP 的头两个字节是 CD 20,用 Debug 加载 p1.exe,查看 PSP 的内容。

结果分析:cx中反映了该程序的大小,ds与cs相差10h,物理地址相差100h,256个字节,实际上这256字节是psp用于实现交互的,所以cs里面的值等于ds+10h
三、实验总结
○1学会了编辑,编译,链接,执行,并且进入debug跟踪。

○2学会栈的使用,ss sp的含义,pop push分两步操作。

相关文档
最新文档