




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机实验第一、二次实验实验一 :指令与汇编语言基础一、 实验目的1了解命令行操作基本方式和基本命令,掌 握PC环境下命令行方式的特点;2掌握汇编语言程序指令编辑、宏汇编、连 接和运行的基本概念 ;3熟练掌握动态调试程序TD的常用命令和窗口功能,学会用TD调试程序,修改环境;4学会利用DEBUG或TD检查认识指令功能的正确方法。二、 实验内容必做实验一要求计算两个多字节十六进制数之差: 3B74AC60F8-20D59E36C1=?式中被减数和减数为5个字节,存放在DATA1和 DATA2的内存区,低位在前,高位在后。试编写减法的程序段,要求相减的结果存放在首址为 DATA3的内存区。必做实验二以BUFFER为首地址的内存区存放了10个十六位带符号数,编写程序比较它们的大小,找出其中最小的带符号数,存入MIN和MIN+1单元。选做实验两个字符串的长度均为10,首地址分别为STRING1和STRING2,比较两个字符串是否完全相同,如果相同,将BL寄存器置为00H;如果不完全相同,将BL寄存器置为FFH,并将第一个字符串中的第一个不相同字符的地址放在SI寄存器中。三、 实验原理必做实验一由于本题中被减数和减数都比较长,一个寄存器放不下,我们将其分开存放。它们都是5个字节,根据实验条件,应分成3处存放CL-BX-AX(被减数),减数直接从memory里调用。由于数据分段存放,在做减法的时候,我们应采用SUB指令和SBB(带借位位的减法)指令相结合的方法。必做实验二首先,将BUFFER中的第一个数据存到MIN中。将BUFFER中的数据和MIN中的数据相比较,如果BUFFER中的数据小,则用BUFFER中的数据存放到MIN中,然后进行下一次循环;否则,直接进行下一次循环。循环结束时,MIN中的数据就是BUFFER中最小的数据。选做实验输入待比较字符串分别定义在ds和es,定义si和di初始值并设置为cld递增模式,利用repe和cmpsb组合指令进行比较是否相等,如果相等,重复比较指令,如果不等,判断cx是否为0,为0则bl赋为0,否则bl赋为ff,si赋为cx,程序结束。四、实验源程序必做实验一data segmentdata1 db 0F8H,60H,0ACH,74H,3BH data2 db 0C1H,36H,9EH,0D5H,20Hdata3 db 20 dup(?)data endsstack segment para stack stack db 100 dup(?)stack endscode segment assume ds:data,cs:code,ss:stack,es:datastart: mov ax,data mov es,ax mov ds,ax mov si,0 mov cx,5 clcloop1: mov al,data1si mov bl,data2si sbb al,bl mov data3si,al inc si loop loop1 mov ah,4ch int 21hcode ends end start 必做实验二data segmentBUFFER DW 0123H,1234H,0D345H,0102H,0532H,1403H,0000H,3E32H,0C212H,0E1C4HMIN db 2 dup(?)data endsstack segment para stack stack db 100 dup(?)stack endscode segment assume ds:data,cs:code,ss:stack,es:datastart: mov AX,data mov es,AX mov ds,AX mov si,0 mov AX,BUFFER mov MIN,AL mov MIN+1,AH mov cx,9 clcLOOPER: add si,2 mov ax,buffersi mov BL,MIN mov BH,MIN+1 cmp AX,BX JG TOLOOP mov MIN,AL mov MIN+1,AHTOLOOP: LOOP LOOPER mov AH,4ch int 21hcode ends end start选做实验 data segmentSTRING1 DB 1111111111STRING2 DB 1111111111data endsstack segment para stack stackdb 100 dup(?)stack endscode segmentassume cs:code,ds:data,ss:stack,es:datastart: mov ax,data mov es,ax mov ds,ax xor bx,bx mov cx,9 mov si,0 clcLOOP1: mov al,string1si mov dl,string2si cmp al,dl jne setbx add si,1 LOOP LOOP1 mov bl,00h jmp oversetbx: mov bl,0ffh add si,1over: mov ah,4ch int 21hcode ends end start四、 实验结果及遇到的问题必做实验一实验结果是:1A9F0E2A37。该结果和预期的结果相同,试验成功。必做实验二实验结果:C212H,和预期的结果相同。选做实验实验二、汇编语言程序设计一、 实验目的1、近一步熟悉汇编语言的编辑、宏汇编、链接和运行的基本概念 。2、熟练掌握动态调试程序TD/DEBUG的常用指令和窗口功能,学会用TD/DEBUG调试程序,修改数据和寄存器环境。 3、熟悉掌握汇编语言程序的典型数据结构设计、典型程序控制方法,了解DOS/BIOS功 能调用的基本方法。二、实验内容必做实验一从键盘输入任意字符串后,存入自定义存储单元,判断处理后将字符串中小写字母转换为大写字母(其它字符不变),并按 原顺序将这些字符在屏幕上显示出来,并显示字符串“The total number is XXXXX”。必做实验二从键盘输入一个0255之间的十进制数,将其转换为16进制数,并在屏幕上显示变换 前后的数据。选做实验在内存中定义5个十六进制带符号数(范围为-128+127),请将它们按从大到小排序,并将排序前后的数据显示在屏幕上。三、实验原理四、实验源程序必做实验一data segmentinput db 100,100 dup(0)string1 db 0dh,0ah,please input your strings,0dh,0ah,$string2 db 0dh,0ah,the strings you input are:,0dh,0ah,$string3 db 0dh,0ah,do you want to continue(y/n):,0dh,0ah,$string4 db 0dh,0ah,the total numer is:,0dh,0ah,$number db 00hdata endsstacks segment stack db 256 dup(0)stacks endscode segment assume cs:code,ds:data,ss:stacksmain proc farstart:mov ax,data mov ds,axloop1:mov dx,offset string1 mov ah,09h int 21h mov dx,offset input mov ah,0ah int 21h mov dx,offset string2 mov ah,09h int 21h mov al,input1 mov number,al call disp mov dx,offset string4 mov ah,09h int 21h call show mov dx,offset string3 mov ah,09h int 21h mov ah,01h int 21h cmp al,y jz loop1 mov ah,4ch int 21hmain endpdisp proc near xor cx,cx mov cl,input1 mov si,2again:mov dl,inputsi cmp dl,61h jb next cmp dl,7ah ja next sub dl,20hnext:mov ah,02h int 21h inc si loop again retdisp endpshow proc near mov al,number mov ah,0h mov cl,0ah div cl add al,30h add ah,30h mov ch,ah mov dl,al mov ah,02h int 21h mov dl,ch mov ah,02h int 21h retshow endp code endsend start必做实验二data segmentright db 1input db 4,5 dup(0)output dw 00hten dw 0ahstring1 db 0dh,0ah,Please input your number(0255): ,$string2 db 0dh,0ah,The number you input is(00hffh) ,$string3 db 0dh,0ah,Do you want to continue (y/n):,0dh,0ah,$string4 db 0dh,0ah,The number input is not from 0255,0dh,0ah,$data endsstacks segment stack db 256 dup(0)stacks endscode segment assume ds:data,cs:code,ss:stacksmain proc farstart: mov ax,data mov ds,ax mov ax,stacks mov ss,axLOOP1: mov output,00h mov dx,offset string1 mov ah,09h int 21h mov dx,offset input mov ah,0ah int 21h mov right,1 call change cmp right,0 jz error mov dx,offset string2 mov ah,09h int 21h mov ax,output mov dl,ah mov cl,4 shr dl,cl call disp mov dl,ah and dl,0fh call disp mov dl,al mov cl,4 shr dl,cl call disp mov dl,al and dl,0fh call disp jmp goerror: mov dx,offset string4 mov ah,09h int 21hgo: mov dx,offset string3 mov ah,09h int 21h mov ah,1 int 21h cmp al,y jz LOOP1 cmp al,y jz LOOP1 mov ah,4ch int 21hmain endpchange proc near clc xor ax,ax xor bx,bx xor dx,dx xor cx,cx mov cl,input1 mov si,2again:mov bl,inputsi cmp bl,30h jb error1 cmp bl,39h ja error1 sub bl,30h dec cl cmp cl,0 jz over mov ax,1 push cxLOOP2: mul ten loop LOOP2 pop cx mul bx add output,ax jc error inc si jmp againover: add output,bl jnc over1error1:mov right,0over1: ret change endp disp proc near push dx push ax cmp dl,9 jbe num add dl,7num: add dl,30h mov ah,02h int 21h pop ax pop dx retdisp endp code endsend start选做实验data segmentinput1 db 4,5 dup(0)input2 db 4,5 dup(0)input3 db 4,5 dup(0)input4 db 4,5 dup(0)input5 db 4,5 dup(0)temp db 00h,00htempout db 00houtput db 00h,00h,00h,00h,00hstring1 db 0dh,0ah,please input your number(00hffh):,$string2 db 0dh,0ah,the number you input is(00hffh):,0dh,0ah,$string3 db 0dh,0ah,the number after ordering is(00hffh):,0dh,0ah,$string4 db 0dh,0ah,do you want to continue(y/n):,0dh,0ah,$data endsstacks segment stack db 256 dup(0)stacks endscode segment assume cs:code,ds:data,ss:stacksmain proc farstart:mov ax,data mov ds,ax mov ax,stacks mov ss,axlooper:mov dx,offset string1 mov ah,09h int 21h mov dx,offset input1 mov ah,0ah int 21h mov dx,offset string1 mov ah,09h int 21h mov dx,offset input2 mov ah,0ah int 21h mov dx,offset string1 mov ah,09h int 21h mov dx,offset input3 mov ah,0ah int 21h mov dx,offset string1 mov ah,09h int 21h mov dx,offset input4 mov ah,0ah int 21h mov dx,offset string1 mov ah,09h int 21h mov dx,offset input5 mov ah,0ah int 21h call showin mov al,input12 mov temp0,al mov al,input13 mov temp1,al call change mov al,tempout mov output0,al mov al,input22 mov temp0,al mov al,input23 mov temp1,al call change mov al,tempout mov output1,al mov al,input32 mov temp0,al mov al,input33 mov temp1,al call change mov al,tempout mov output2,al mov al,input42 mov temp0,al mov al,input43 mov temp1,al call change mov al,tempout mov output3,al jmp loop2loop1:jmp looper loop2:mov al,input52 mov temp0,al mov al,input53 mov temp1,al call change mov al,tempout mov output4,al call order;85 mov dx,offset string3 mov ah,09h int 21h mov si,0circle:mov ah,outputsi mov dl,ah mov cl,4 shr dl,cl call disp mov dl,ah and dl,0fh call disp mov dl,48h mov ah,02h int 21h mov dl,0h mov ah,02h int 21h inc si cmp si,5 jnz circle mov dx,offset string4 mov ah,09h int 21h mov ah,1 int 21h cmp al,y jz loop1 cmp al,Y jz loop1 mov ah,4ch int 21hmain endpshowin proc near mov dx,offset string2 mov ah,09h int 21h mov si,2circle1:mov dl,input1si mov ah,02h int 21h inc si cmp si,5 jnz circle1 mov dl,0h mov ah,02h int 21h mov si,2circle2:mov dl,input2si mov ah,02h int 21h inc si cmp si,5 jnz circle2 mov dl,0h mov ah,02h int 21h mov si,2circle3:mov dl,input3si mov ah,02h int 21h inc si cmp si,5 jnz circle3 mov dl,0h mov ah,02h int 21h mov si,2circle4:mov dl,input4si mov ah,02h int 21h inc si cmp si,5 jnz circle4 mov dl,0h mov ah,02h int 21h mov si,2circle5:mov dl,input5si mov ah,02h int 21h inc si cmp si,5
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 项目税收管理策划
- 2025浙江金华市兰溪市顺通港航建设开发有限公司面向社会招聘10人笔试参考题库附带答案详解
- 2025浙江嘉兴市海宁市尖山新区开发有限公司招聘16人笔试参考题库附带答案详解
- 高考完形填空满分强化训练100(附答案)
- 高考数学(理)一轮复习教师用书第二章基本初等函数导数及其应用
- 2025山东黄河生态发展集团有限公司招聘16人笔试参考题库附带答案详解
- 2025四川长虹电子科技有限公司招聘主管电路设计工程师等岗位10人笔试参考题库附带答案详解
- 2024广西凭祥市友谊关旅游开发有限公司招聘11人笔试参考题库附带答案详解
- 暂停劳动合同协议
- 铜像采购合同协议
- 2025届上海市浦东新区高三二模英语试卷(含答案)
- 开曼群岛公司法2024版中文译本(含2024年修订主要内容)
- 【MOOC】航空燃气涡轮发动机结构设计-北京航空航天大学 中国大学慕课MOOC答案
- 工程变更通知单ECN模板-20220213
- 深基坑边坡喷锚防护施工方案
- 动火安全作业票填写模板2022年更新
- 2021年12月英语六级听力试题、原文及答案 两套
- 煤矿井下绞车房管理制度
- 捷达离合器设计毕业设计)
- 迈瑞-呼吸模式的应用及参数设置-V1.0-201603
- 酸洗磷化线材项目建议书范文
评论
0/150
提交评论