汇编语言程序设计实验六
单片机实验报告

单片机实验报告实验一:存储器块清零或赋值一、实验目的1 熟悉存储器的读写方法,熟悉51汇编语言结构。
2 熟悉循环结构程序的编写。
3 熟悉编程环境和程序的调试。
二、实验内容指定存储器中某块的起始地址和长度,要求将其内容清零或赋值。
例如将4000H开始的10个字节内容清零或全部赋值为33H。
注意:1 文件不要用中文名称保存时不要用中文路径(目录),不要放在“桌面”上,源文件和工程要放在同一个文件夹下,文件名称和路径名称不要太长。
2 查看存储器菜单使用:窗口---数据窗口---XDATA 观察存储器内容3 查看SFR:窗口---CPU窗口查看CPU寄存器SFR4 单步执行:执行---单步执行(F8),每执行一步,查看每条语句涉及到的寄存器和存储器内容的变化结果,是否是指令所要得到的结果,如不是,检查错误原因,修改。
5利用多种执行方法和观察各种窗口调试程序,直至程序满意为止。
三、实验仪器微机、VW,WA VE6000编程环境软件,(单片机实验箱)Lab6000/Lab6000通用微控制器MCS51实验四、实验步骤1、新建工程文件。
(注意:文件不要用中文名称保存时不要用中文路径)2、编写程序。
3、运行和调试过程。
外部数据存储器(4000H为首地址的10个字节)中初始状态(随便赋值FFH):单步执行程序,观察SFR中外部地址指针的变化;全速执行程序,可以看到外部数据存储器已赋值33H:五、实验结果可以看到外部数据存储器已赋值33H:六、问题讨论本次实验能够清楚地了解存储器中数据的移动和赋值过程,通过单步执行,对于每一步的指令操作过程能够了解如何执行,查看每条语句涉及到的寄存器和存储器内容的变化结果。
同时,学习掌握汇编程序的编写和调试过程。
实验二:存储块移动一、实验目的1 熟悉51汇编语言程序结构。
2 熟悉循环结构程序的编写,进一步熟悉指令系统。
3 熟悉编程环境和程序的调试。
二、实验内容将指定源地址(3000H)和长度(10字节)的存储块移动到目的地址(3050H)。
汇编语言实验答案 (王爽)

汇编语言答案检测点1.1(第8页)(1)13(2)1024,0,1023(3)8192,1024(4)2^30,2^20,2^10(5)64,1,16,4(6)1,1,2,2,4(7)512,256(8)二进制注意:1.第4题中的符号'^'指求幂运算(如:2^30指2的30次方)检测点2.1(第18页)----------------------(1)写出每条汇编指令执行后相关寄存器中的值。
第一空:F4A3H第二空:31A3H第三空:3123H第四空:6246H第五空:826CH第六空:6246H第七空:826CH第八空:04D8H第九空:0482H第十空:6C82H第十一空:D882H第十二空:D888H第十三空:D810H第十四空:6246H(2)只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。
解答如下:mov ax,2add ax,axadd ax,axadd ax,ax检测点2.2(第23页)----------------------(1)00010H,1000FH(2)1001H,2000H第2题说明:因为段的起始地址要为16的倍数。
所以当段地址小于1001H或大于2000H时CPU都无法寻到。
检测点2.3(第33页)答:CPU修改了4次IP的值。
第1次:执行完mov ax,bx后第2次:执行完sub ax,ax后第3次:读入jmp ax后第4次:执行完jmp ax后最后IP的值为0实验1查看CPU和内存,用机器指令和汇编指令编程(第33页)-----------------------------------------------------1.预备知识:Debug的使用<此部分略>2.实验任务(第43页)(1)<此部分略>(2)<此部分略>(3)通过DEBUG中的D命令查看到主板的生产日期[以月、日、年,分隔符为'/'的格式]存储在内存ffff:0005~ffff:000C(共8个字节单元中)处。
汇编语言程序设计实验报告二(分支循环程序实验)

汇编语言程序设计实验报告二(分支循环程序实验)一、实验目的1、掌握分支程序、循环程序的设计方法。
2、熟悉DEBUG程序的使用方法。
3、掌握汇编语言程序的编辑、汇编、连接以及调试过程。
二、实验内容1、编写一程序,将内存中某一区域的数据传送到另一个区域中(要求用循结构,不考虑数据块重叠问题)。
2、编写一程序,将内存中某一区域的数据传送到另一区域(要求考虑数据块重叠问题)。
三、实验准备1、预习数据传送指令,熟悉分支和循环程序设计方法。
2、预习DEBUG调试程序的使用方法。
3、根据实验内容要求,编写好实验源程序。
四、实验步骤1、用QE或其它编辑软件,在计算机上编辑源程序,使其正确无误。
2、汇编、连接源程序,产生.EXE可执行文件。
3、运行程序。
(1) 进入DEBUG。
打入DEBUGT MYPROG.EXE。
MYPROG为所编程序的文件名。
(2) 先用G命令连续剧连续执行程序,程序执行完毕后,观察运行结果。
如果执行后是对的,说明程序编写是正确的,如果结果不对,说明程序有错误,则执行下一步。
(3) 检查程序。
在程序中设置若干断点,以便杳出错误所在。
(4) 采用单步命令T或执行程序,观察各寄存器和存储单元内容,以便找到错误之处。
五、实验报告要求1、列出程序清单,并给出程序流程图。
2、总结实现数据传送的几种方法,指出它们的区别。
开始3、分析实验中所遇到的一些问题,分析错误原因。
4、说明本实验中是如何使用DEBUG进行调试的。
CX、SI、DI置初值六、流程图勤开始设置增量方式CX、SI、DI置初值保存SI内容AL [SI] SI SI+源块长度[DI] AL N SI>DIYSI SI+1 恢复SI内容恢复SI内容DI DI+1CX CX-1 设置减量方式N CX=0, SI指向源块末尾DI指向目的块末尾Y结束 [DI] [SI]题一流程图 N 传完了吗, 书馆 Y结束题二流程图七、程序清单题一程序清单:STACK SEGMENT STACK ‘STACK’DB 100 DUP(0)STACK ENDSDATA SEGMENT PARA ‘DATA’SOUR DB 0、1、2、3、4、5、6、7、8、9 DEST DB 10 DUP(,)DB ‘$’DATA ENDSSEGMENT PARA‘CODE’ASSUME CS:CODEMAIN PROC FARSTART: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV CX,10MOV SI,offset SOURMOV DI, offset DESTAGAIN: MOV AL,[SI]MOV [DI],ALINC SIIN DILOOP AGAINMOV DX,offset DESTMOV AH,09HINT 21HRETMAIN ENDPCODE ENDSEND START题二程序清单:DATA SEGMENT PARA ‘DATA’STRG DB ‘ABCDEFGHIJKLMNOP’STG1 EQU STRG+4STG2 EQU STHG+8STRSE EQU 6DATA ENDSSTACK SEGMENT PARA ‘CODE’DB 100 DUP(0) STACK ENDSCODE SEGMENT PARA ‘CODE’ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK PROC FARSTART: PUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV ES,AXMOV CX,STRSEMOV SI,OFFSET STG1MOV DI,OFFSET STG2CLDPUSH SIADD SI,STRSE-1CMP SI,DIPOP SIJL MOVESTDADD SI,STRSE-1ADD DI,STRSE-1 MOVE: REP MOVSB RETMAIN ENDPCODE ENDSEND START。
汇编语言源程序运行步骤和DEBUG的使用

汇编语言源程序运行步骤和DEBUG的使用一、实验目的1.熟悉汇编语言源程序书写格式。
2.熟悉汇编语言源程序编辑、汇编、连接、执行步骤。
3.练习DEBUG常用命令的使用。
4.熟悉8086的寄存器。
5.了解程序的执行过程。
二、实验预习要求1、认真阅读预备知识中汇编语言的上机步骤的说明,熟悉汇编程序的建立、汇编、连接、执行、调试的全过程。
2.预习使用DEBUG 检查/修改寄存器内容、查询存储器内容的命令。
3.预习使用DEBUG单步、断点及连续执行程序的命令。
三、实验内容1.编辑以下程序,汇编连接后运行,将输出'HOW ARE YOU?’。
本习题主要目的:熟悉汇编语言源程序的书写格式;熟悉汇编语言源程序的编辑、汇编、连接、运行。
DA TA SEGMENTBUF DB 'HOW ARE YOU?$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DA TAMOV DS,AXMOV DX,OFFSET BUFMOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START2.DEBUG 调试以下程序,查看DATA段中定义的数据在内存中的存放方式,并单步执行查看每一语句执行后相关寄存器的内容,并解释为何取该值:DA TA SEGMENT ;(1)DB 34H,12H ;(2)B DW 1234H ;(3)C DD 0 ;(4)D DB -1,15/3 ;(5)E DB '012' ;(6)F DW 'AB','C' ;(7)G DW ? ;(8)H DB 5 DUP(0) ;(9)I DW $-OFFSET H ;(10)DA TA ENDS ;(11)CODE SEGMENT ;(12)ASSUME CS:CODE,DS:DA TA ;(13)START: MOV AX,CODE ;(14)MOV DS,AX ;(15)MOV BX,SEG A ;(16)MOV CX,OFFSET B ;(17)MOV DX,TYPE C ;(18)MOV AH,4CH ;(19)INT 21H ;(20)CODE ENDS ;(21)END START ;(22)3.下面是第1题采用将主程序定义为远程的程序返回DOS的结束方式,将其编辑、连接、运行,熟悉汇编源程序不同的结束方式。
微机实验心得体会

微机实验心得体会【篇一:微机原理实验报告】一、实验目的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.textmain:la $s0,z #$s0=addrzli $t0,0 #$s1=k=0li $t1,56 #$s2=y=56loop:slti $t2,$t0,50 #判断k是否小于50beq $t2,$0,done #当k大于等于50时跳转srl $t3,$t0,2 #k/4addi $t3,$t3,210 #k/4+210sll $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加1j loop #循环done:li $v0 10syscall五、实验总结通过这次实验,加深了我对理论学习的代码书写规范的理解,练习了qtspim软件的使用,对以后的学习有很大的帮助。
这次实验的内容相对比较简单,原理容易理解,编译的过程中遇到了一点困难,不过在同学的帮助下顺利解决了。
【篇二:微机原理与接口技术实验总结】微机原理与接口技术实验总结11107108徐寒黎一、实验内容以及设计思路1、①试编写一程序,比较两个字符串string1、 string2 所含字符是否相同,若相同输出“match”,若不相同输出“no match”。
汇编语言实现用16位乘法指令完成32位无符号数乘法

汇编语⾔实现⽤16位乘法指令完成32位⽆符号数乘法《微型计算机原理与接⼝技术》实验报告⼀、程序设计题⽬⼀三⼗⼆位⽆符号乘法1 设计分析:(1)程序设计任务:⽤⼗六位乘法指令完成三⼗⼆位⽆符号数乘法(结果64位)。
使⽤MUL指令,完成双字⽆符号数乘法程序,要求乘数和被乘数从键盘输⼊,结果显⽰于屏幕上。
(2)程序设计要求:1)从键盘输⼊两个乘数(⼗六进制)2)结果显⽰于屏幕上(⼗六进制)(3)程序设计过程:1) 定义数据段⽤于开辟缓冲区存储输⼊数据、输出数据和乘积。
2)从键盘分别输⼊两个⼋位数字符(三⼗⼆字节)存⼊缓冲区(分4次输⼊,每次输⼊4个字符,前两次为被乘数的⾼位与低位,后两次为乘数的⾼位与低位)3)对缓冲区输⼊的字符进⾏处理,让Ascal码转换为数值本⾝的数值。
4)把三⼗⼆位分割成两位⼗六位,分别对其进⾏⼗六位的乘法。
5)将四个⼗六位乘法的乘积按照各⾃的位相加的最终乘积6)对所得结果进⾏处理,让Ascal码转换为数值本⾝的数值7)将结果向屏幕输出。
2、算法(⼀个框代表16位2进制数)3、X2 X1y1P+6 p+4 p+2 p4、程序流程图:5、测试数据与运⾏结果:输⼊被乘数的⾼位的4个字符X2:输⼊被乘数的低位的4个字符X1:输⼊乘数的⾼位的4个字符y2:输⼊乘数的低位的4个字符y1:运⾏结果:6、程序源代码及注解:ddata segmenty1 dw 16 dup(?)y2 dw 16 dup(?)p dw 30 dup(?)keybuf db 10 dup(?)ddata ends ;定义数据段ccode segmentassume cs:ccode,ds:ddatastart:mov ax,ddatamov ds,axmov dx,offset keybufmov bx,dxmov [bx],byte ptr 9mov ah,0ahint 21hmov ah,[bx+2]mov al,[bx+3]shl al,4shr ax,4mov dh,almov ah,[bx+4]mov al,[bx+5]shl al,4shr ax,4mov dl,almov x2,dx ;输⼊被乘数的⾼位的4个字符x2 mov dx,offset keybufmov bx,dxmov [bx],byte ptr 9mov ah,0ahint 21hmov ah,[bx+2]mov al,[bx+3]shl al,4mov ah,[bx+4]mov al,[bx+5]shl al,4shr ax,4mov dl,almov x1,dx ;输⼊被乘数的低位的4个字符x1 mov dx,offset keybufmov bx,dxmov [bx],byte ptr 9mov ah,0ahint 21hmov ah,[bx+2]mov al,[bx+3]shl al,4shr ax,4mov dh,almov ah,[bx+4]mov al,[bx+5]shl al,4shr ax,4mov dl,almov y2,dx ;输⼊乘数的⾼位的4个字符y2 mov dx,offset keybufmov bx,dxmov [bx],byte ptr 9mov ah,0ahint 21hmov ah,[bx+2]mov al,[bx+3]shl al,4shr ax,4mov dh,almov ah,[bx+4]mov dl,almov y1,dx ;输⼊乘数的低位的4个字符y1mov ax,x1mov dx,y1mul dxmov [p],axmov [p+2],dx ;被乘数低位4字符x1和乘数低位4字符y1相乘结果低位存⼊p,⾼位存⼊p+2mov ax,x2mov dx,y1mul dxadd [p+2],axadc [p+4],dx ;被乘数⾼位4字符x2和乘数低位4字符y1相乘结果低位存⼊p+2,⾼位存⼊p+4mov ax,x1mov dx,y2mul dxadd [p+2],axadc [p+4],dxadc [p+6],0 ;被乘数低位4个字符x1和乘数⾼位4个字符y2相乘结果低位存⼊p+2,⾼位存⼊p+4mov ax,x2mov dx,y2mul dxadd [p+4],axadc [p+6],dx ;被乘数⾼位4个字符x2和乘数⾼位4个字符y2相乘结果低位存⼊p+4,⾼位存⼊p+6mov al,byte ptr p+7 ;输出call dispalmov al,byte ptr p+6call dispalmov al,byte ptr p+5mov al,byte ptr p+3call dispalmov al,byte ptr p+2call dispalmov al,byte ptr p+1call dispalmov al,byte ptr pcall dispalmov ah,4chint 21hdispal proc ;⼦程序屏幕输出过程push cxpush dxpush axmov cl,4shr al,clor al,30hcmp al,3ahjb br1add al,7BR1: mov dl,almov ah,2int 21hpop axand al,0fhor al,30hcmp al,3ahjb br2add al,7br2: mov dl,almov ah,2int 21hretdispal endpccode endsend start题⽬⼆递归调⽤⼦程序设计1、设计分析:(1)程序设计任务:有n个⼈坐在⼀起,第n个⼈⽐第n-1个⼈⼤h岁。
实验指导 自己加了注释
《微机原理及接口技术》实验指导书杨霞周林英编长安大学电子与控制工程学院2009年9月前言本实验指导是为适应各大、中专院校开设微机原理及应用方面的课程需做大量软硬件实验的需要而编写的,供学生编程用。
完成本实验指导中的实验,可使学生基本掌握8086/8088的结构原理、接口技术、程序设计技巧。
手册中详细叙述了各实验的目的、内容,列出了接线图、程序框图和实验步骤。
主要学习内容为80X86语言实验环境配置、汇编源语言格式、输出字符、循环结构、子程序调用,以及加减乘除等指令操作、通用接口芯片的接口编程与使用。
所有实验都是相互独立的,次序上也没有固定的先后关系,在使用本书进行教学时,教师可根据教学要求,选择相应实验。
学习结束后,要求学生能够独立编写出综合加减乘除等指令,以及循环结构、子程序调用等程序控制程序、看懂一般接口芯片电路图。
目录实验一清零程序 (4)实验二拆字程序 (6)实验三数据区移动 (8)实验四多分支程序设计 (10)实验五多字节减法运算 (13)实验六显示程序 (16)实验七 8251串口实验 (20)实验八步进电机控制 (26)附录一汇编语言的存储模型 (36)附录二 8279键值显示程序 (37)实验一清零程序一、实验目的掌握8088汇编语言程序设计和调试方法。
二、实验设备STAR系列实验仪一套、PC机一台。
三、实验内容把RAM区内4000H-40FFH单元的内容清零。
四、程序框图五、源程序清单.MODEL TINY.STACK 100.DATA.CODEORG 0100HSTART:MOV BX,4000HMOV AX,0000HMOV CX,80HL1: MOV [BX],AXINC BXINC BXLOOP L1JMP $END START六、实验步骤手动修改RAM区内4000H-40FFH的内容,连续或单步方式运行程序,检查4000-40FFH内容执行程序前后的变化。
七、思考1、把4000H-40FFH中的内容改成FF,如何修改程序。
排序
实验一、用8086/8088汇编语言进行数据排序一、实验目的:1、熟悉EMU8086集成开发环境的使用。
2、通过编程、上机调试,进一步理解汇编语言的设计思路与执行过程。
3、熟悉INT 21H中断调用。
4、掌握数据排序的常用算法,利用汇编语言实现数据排序。
5、巩固理论知识,锻炼动手编程。
二、实验内容:1、在TABLE1开始的内存单元中,预先存储100个有符号字类型的数值。
2、编写代码、将TABLE1中的100个数值,按照从大到小的排序,放在TABLE2开始的内存单元中。
3、将TABLE2中的数字,顺序输出在屏幕上。
4、查看TABLE1开始的内存的100个数值。
5、查看TABLE2开始的内存的100个数值。
三、设计思路:1、自定义一个display函数,用来往屏幕上显示特定的字符。
2、定义一个data段,用来存储固定的字符。
3、定义一个code段,当做主程序。
4、所用的方法是冒泡排序法5、主程序中第一步先获取键盘输入。
6、主程序中第二步将键盘输入的数存储到内存中。
7、主程序中第三步用[基址+变址]方法进行冒泡排序。
8、主程序中第四步将排序好后新的数组从内存中取出,并回显到屏幕上。
四、排序算法:1、冒泡排序:(1)比较相邻的两个元素,如果第二个比第一个大,则交换这两个值。
(2)对每一对相邻元素做相同的工作,从开始第一对到结尾的最后一对,这样最后的元素应该会是最大的数。
(3)针对所有的元素重复以上的步骤,除去最后一个。
(实际过程中是最后一个值和后面的一个空值进行比较)(4)重复(1)~(3),直至排序完成。
2、选择排序:(1)首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
(2)再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
(3)重复(1)~(2)过程,直至排序完成。
3、插入排序:(1)构建有序数列。
(2)对于未排序的数据,在已排序的数列中从后向前扫描。
(3)找到相对应的位置后插入。
《单片机技术》课程教学大纲
《单片机技术》课程教学大纲一、课程的性质和任务课程性质:本课程是工科院校电子、信息类各专业学生的一门专业课,也是自动化技术专业的必修课。
本课程主要包括单片机结构、指令系统、存储器和接口扩展技术及接口应用等。
课程任务:通过本课程的学习,使学生掌握一些硬件方面的知识,初步能进行单片机编程,初步具有“微控制技术”的设计思想体系。
第一章预备知识(数制与码制)内容:进位计数制及各计数制间的转换,二进制数的运算,带符号数的表示方法,定点数与浮点数,BCD码与ASCII码重点:各计数制间的转换,二进制数的运算,带符号数的表示,BCD 码难点:带符号数的表示习题:二进制,原码、反码、补码的运算教学要求:通过本章的学习能够了解二进制的基本运算规律,掌握带符号数的表示方法,对编码有初步了解第二章单片机基础内容:概述,MCS-51单片机的基本结构、中央处理器CPU,MCS-51单片机存储器及存储空间,并行输入/输出接口,CPU时序与复位重点:中央处理器CPU,存储空间的分配,并行口难点:存储空间的分配,并行口教学要求:了解MCS-51单片机的基本结构,对存储器及存储空间有初步了解,掌握各并行口的作用与特点,了解CPU的时序第三章指令系统及汇编语言程序设计内容:MCS-51单片机汇编语言与指令格式,寻址方式,MCS-51单片机指令系统,汇编语言及汇编语言程序设计,基本程序设计方法,程序设计举例重点:寻址方式,汇编语言及汇编语言程序设计,基本程序设计方法难点:汇编语言程序设计实验:实验一数据传送实验二循环结构程序设计教学要求:掌握汇编语言程序设计的一般方法,具有初步程序设计的能力第四章单片机系统的扩展内容:系统扩展概述,常用的扩展器件简介,存储器的扩展,I/O口的扩展重点:74LS373、74LS138的使用方法,存储器的扩展难点:存储器的扩展实验:实验三存储器的扩展教学要求:掌握几种常用器件的使用方法,掌握存储器的扩展方法第五章输入/输出、中断、定时与串行通信内容:I/O概述,输入/输出传送方式,MCS-51单片机的中断系统,定时/计数器,串行通信接口重点: MCS-51单片机的中断系统,定时/计数器难点:中断系统实验:实验四定时器实验实验五计数器实验实验六中断的应用教学要求:掌握常用输入/输出的传送方式,掌握中断、定时/计数器、串行通信接口的使用方法第六章接口芯片与接口技术内容:可编程并行I/O接口8255A,可编程RAM/IO/CTC接口8155,键盘接口8279,A/D转换器接口,D/A转换器接口重点:8255A,8155难点:8155教学要求:掌握8255A、8155、8279、DAC0832、ADC0809的使用方法四、教学的基本要求1、教学的基本环节包括课堂讲授,课后作业,实验,考试考察等2、教学辅助资料各类参考书、讲义及相关专业期刊3、实验环节本课程中安排了大量实验,根据学生实际情况,选择合适的实验内容,要求学生自己设计电路,自己编写程序,独立完成。
汇编语言实验教程-ddg
实验一:熟悉环境及DEBUG应用实验目的:1、复习C/C++的变量、地址、指针、内存空间等概念;2、熟悉基本的DOS命令;3、掌握DEBUG的启动及其使用方法与常用命令。
4、初步认识CPU的寄存器。
实验内容:一、C/C++语言回顾目的:通过C/C++的变量、地址、指针、内存空间等概念的回顾,了解计算机内数据的存放方式和访问方式。
1、编程定义一个整型int、一个双精度型double、一个字符型char的指针,并赋初值,然后显示各指针所指目标的值与地址,各指针的值与指针本身的地址及各指针所占字节数(其中地址用十六进制显示,注意字符指针输出是字符串,必须强制转换为无类型指针)。
要求运行结果如下所示:变量内容首地址长度(字节)cval ‘A’0x0012ff64 1类型:整型: int, short int, short, long int, long, unsigned int, unsigned short, unsigned long实型: float, double, long double字符型: char#include<iostream>using namespace std;int main(){int *ip,ival=100;double *dp,dval=99.9;char *cp,cval='A';ip=&ival;dp=&dval;cp=&cval;cout<<*ip<<'\t'<<&*ip<<'\t'<<sizeof(*ip)<<endl;cout<<*dp<<'\t'<<&*dp<<'\t'<<sizeof(*dp)<<endl;cout<<*cp<<'\t'<<(void*)&*cp<<'\t'<<sizeof(*cp)<<endl;//字符指针输出是字符串,必须强制转换为无类型指针cout<<*cp<<'\t'<<&*cp<<'\t'<<sizeof(*cp)<<endl;//输出A开头的字符串cout<<ip<<'\t'<<&ip<<'\t'<<sizeof(ip)<<endl;cout<<dp<<'\t'<<&dp<<'\t'<<sizeof(dp)<<endl;cout<<(void*)cp<<'\t'<<&cp<<'\t'<<sizeof(cp)<<endl;return 0;}2、编程定义一个一维数组、一个二维数组、一个字符串(字符数组)、一个结构体,并赋初值,然后显示各指针所指目标的值与地址,各指针的值与指针本身的地址及各指针所占字节数(长度)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六:子程序设计
实验题目:
实验六:子程序设计
实验目的:
(1) 掌握子程序设计的方法,学习正确使用子程序的调用及这些指令及堆栈操作指令学
习应用子程序变量传送的方法,提高编程能力。
实验要求:
(1) 单独完成程序分析与设计;
(2) 完成实验内容和撰写实验报告。
(3) 提交设计题的源程序。
实验内容:
1、验证题:
读懂例子程序,计算!N的程序,并上机调试、运行,以检验程序运行结果。
2、设计题:
(学号为双号的同学完成)编写程序,从键盘接收一字符串,并查找某个字符A出现的次
数.
提示:主程序从键盘接收一字符串建立串STRING,然后将STRING的首地址、串长度作为
子程序的入口参数并通过堆栈传递给段内调用的子程序,同时在AL中放入要查找的字符。
data segment
message1 db 'please input the sentance.',13,10,'$'
message2 db 'please input the key word',13,10,'$'
message3 db 'yes ,match',13,10,'$'
message4 db 'oh! no match !',13,10,'$'
seg1 db 50,?,50 dup(?)
seg2 db 30,?,30 DUP(?)
data ends
code segment
assume cs:code,ds:data,es:data
start:
mov ax,data
mov ds,ax
mov es,ax
mov dx,offset message1
mov ah,09h
int 21h
mov dx,offset seg1
mov ah,0ah
int 21h
mov dx,offset message2
mov ah,09h
int 21h
mov dx,offset seg2
mov ah,0ah
int 21h
mov ax,offset seg1
mov bx,offset seg2
mov cx,[ax+1]
add ax,2
mov si,ax;
add bx,2
push bx
mov di,bx
cld
L2: mov ax,cx
mov cx,[bx-1]
repe cmpsb
jz L1
inc si
pop di
push di
mov cx,ax
cmp cx,[bx-1]
jb L4
loop L2
L4: mov dx,offset message4
mov ah,09h
int 21h
jmp L3
L1: mov dx,offset message3
mov ah,09h
int 21h
L3: mov ah,04ch
int 21h
code ends
end start
实验心得
本次试验是我又一次巩固了汇编语言的基础,尤其是调用子程序部
分。但伪指令运用还不是很熟练,编写程序还是有些困难。但在认真
看书和同学们的指导后,能编写一个雏形。程序的功能还有待加强,
对汇编语言程序的实践能力又有进一步加强。