微机原理第三次实验报告
微机实验报告

微机实验报告第⼀次实验1.写出完成下列功能的指令序列(1)传送20H到AL寄存器MOV AL , 20H(2)将(AL)*2 MOV AL , 02H MUL AL (3)传送25H到BL寄存器MOV BL , 25H (4)(AL)*BL MUL BL问最后结果(AX)=?AX=0940H2.分别写出完成下列指令要求的指令(1)将BX的低4位清零AND BX , F0H(2)将AX的⾼4位置1 OR AX , F0H(3)将DX的低4位取反;XOR DX , 0FH(4)将CX的中间⼋位清零AND CX , 0FF0H(5)将AX中与BX中的对应位不相同的位均置1 XOR AX , BX3.上机运⾏下⾯指令序列,分析运⾏后(AX)=?mov cl , 8sar ax ,cldec axmov cx ,8mul cxax=210.9h4. 4.设DS=当前段地址,BX=0300H,SI=0002H,请⽤DEBUG的命令将存储器偏移地址300-304H连续单元装⼊0AH0BH0CH0DH0EH。
在DEBUG状态下送⼊下⾯的程序,并⽤单步执⾏的⽅法,分析每条指令原源地址的形成过程?当数据传送完毕时,AX中的内容是什么?8.编程:求两个数的平均值。
这两个数分别放在X单元和Y单元中,⽽平均值放在Z单元中。
即Z=(X+Y)/2 data segmentx db 2y db 6z db ?data endscode segmentassume cs:code, ds;datastart:mov ax, datamov ds,axmov al, xmov ah,0add al,ymov bl,2div blint 21hcode endsend start9.输⼊下⾯源程序,并对程序进⾏会变,连接,调式并说明程序的功能。
data segment number dw 0168hdata endscode segmentassume cs;code, ds: dataorg 0100hstart:mov ax, datamov ds, axmov dx,0mov bx, 0001hmov di, 8000hmov si, 0mov ax, numbermov cx, 16next;test ax, bxjz continueor dx, diinc sicontinue:ror di, 1mov ah,4chint 21hcode endsend start1.编写程序: 求1+2+3+…..+100的和data segment number db 01hdata endscode segmentassume cs:code , ds:datastart:mov ax , datamov ds , axmov ax , datamov bx , numbermov ax , 0mov cx , 64hnext:add ax ,bxinc bxloop nextmov ah , 4chint 21hcode endsend start2.在内存中tab为⾸的地⽅存有1-9的平⽅值,从键盘输⼊⼀个数(1-9),将该数存⼊X单元,⽴⽅值存⼊XXX单元中data segmenttab db 0,1,4,9,16,25,36,49,64,81x db 10dup(?)xxx db 10dup(?)data endscode segmentassume cs:code ,ds: datastart:mov ax ,datamov ds , ax mov ax , datamov cx ,09hnext:mov ah , 1int 21hand ah ,0fhmov bx ,ahmov si , offset tabmov sp , offset xmov di , offset xxxmov dx , byte ptr[bx+si]mov al, blmul dxmov [bx+di] ,axmov [sp+bx] , bxmov ah , 4chint 21hcode endsend start第⼆次实验顺序程序设计从键盘输⼊两个1位⼗进制数,求这两个数的和,并将结果显⽰在屏幕上data segment infor1 db 'please input the first data (<10):$'infor2 db 0ah,0dh,'please input the second data (<10):$'infor3 db 0ah,0dh,'the result is:$'data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov dx,offset infor1mov ah,9int 21hmov ah,1int 21hand al,0fhmov ah,00000000000000000000mov bl,almov dx,offset infor2int 21hmov ah,1int 21hand ax,000fhadd al,blaaaor ax,3030hpush axmov dx,offset infor3 mov ah,9int 21hpop axmov dl,ahpush axmov ah,2int 21hpop axmov dl,almov ah,2int 21hmov ah,4chint 21hcode endsend startresult db 0ah,0dh,'cube result is :$' data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov dx,offset numbermov ah,9int 21hmov ah,1int 21hand ax,000fhmov bx,axmul blmul blmov cl,64hdiv clor al,30hpush axmov dx,offset resultmov ah,9int 21hpop axmov dl,alpush axmov ah,2int 21hpop axmov cl,0ahmov al,ahmov ah,0div clor ax,3030hpush axmov ah,2int 21hpop axmov dl,ahmov ah,2int 21hmov ah,4chint 21hcode endsend start分⽀程序设计1.某程序可从键盘接收命令(0-5),分别专项6个⼦程序,⼦程序⼊⼝地址分别为p0-p5,编制程序,⽤跳转表实现分⽀结构程序设计,记录实验结果data segmentmessage db 'please input key (0-5):$'crmessage db 0ah,0dh,'$'errormessage db 'you hit error key !',0ah,0dhdb 'please try again(0-5):$'message0 db 'you hit the key 0',0ah,0dh,'$'message1 db 'you hit the key 1',0ah,0dh,'$'message2 db 'you hit the key 2',0ah,0dh,'$'message3 db 'you hit the key 3',0ah,0dh,'$'message4 db 'you hit the key 4',0ah,0dh,'$'message5 db 'you hit the key 5',0ah,0dh,'$'code segmentassume cs:code,ds:data start:mov ax,datamov ds,axmov ah,9lea dx,messageint 21htryagain:mov ah,1int 21hmov bl,almov ah,9mov dx,offset crmessage int 21hcmp bl,'0'jz key0cmp bl,'1'jz key1cmp bl,'2'jz key2cmp bl,'3'jz key3cmp bl,'4'jz key4cmp bl,'5'jz key5error:mov ah,9mov dx,offset errormessage int 21hjmp tryagainkey0:lea dx,message0mov ah,9int 21hjmp exitkey1:lea dx,message1 mov ah,9int 21hjmp exitkey2:lea dx,message2 mov ah,9int 21hjmp exitkey3:lea dx,message3 mov ah,9int 21hjmp exitkey4:lea dx,message4 mov ah,9int 21hjmp exitkey5:lea dx,message5 mov ah,9int 21hexit:mov ah,4chint 21hcode endsend start第三次实验循环程序设计1.从⾃然数1开始累加,直到累加和⼤于1000为⽌,统计被累加的⾃然数的个数,并把统计的个数送⼊N单元,把累加和送⼊SUM单元。
微机原理实训报告完整

资料范本本资料为word版本,可以直接编辑和打印,感谢您的下载微机原理实训报告完整地点:__________________时间:__________________说明:本资料适用于约定双方经过谈判,协商而共同承认,共同遵守的责任与义务,仅供参考,文档可直接下载或修改,不需要的部分可直接删除,使用时请详细阅读内容一、设计目的通过课程设计使学生更进一步掌握微机原理及应用课程的有关知识,提高应用微机解决问题的能力,加深对微机应用的理解。
通过查阅资料,结合所学知识进行软、硬件的设计,使学生初步掌握应用微机解决问题的步骤及方法。
为以后学生结合专业从事微机应用设计奠定基础。
二、设计的原始资料及依据(1)查阅微机原理及应用、汇编语言程序设计等书籍;(2)掌握字符串的输入,输出和排序。
三、设计的主要内容及要求内容:从PC键盘输入5个字符串,排序及显示要求1)输入5个字符串。
2)对输入的字符串进行排序并正确显示。
四、对设计说明书撰写内容、格式、字数的要求1.课程设计说明书(论文)是体现和总结课程设计成果的载体,一般不应少于3000字。
2.学生应撰写的内容为:目录、正文、参考文献等。
课程设计说明书(论文)的结构及各部分内容要求可参照《沈阳工程学院毕业设计(论文)撰写规范》执行。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
3.说明书(论文)手写或打印均可。
手写要用学校统一的课程设计用纸,用黑或蓝黑墨水工整书写;打印时按《沈阳工程学院毕业设计(论文)撰写规范》的要求进行打印。
4. 课程设计说明书(论文)装订顺序为:封面、任务书、成绩评定表、目录、正文、总结、参考文献。
五、设计完成后应提交成果的种类、数量、质量等方面的要求;提交课程设计说明书一份。
在说明书中要有设计原理、硬件电路接线图、设计的程序及必要注释等。
六、时间进度安排;沈阳工程学院微机原理及汇编语言程序设计程设计成绩评定表系(部):信息学院班级:学生姓名:目录TOC \o "1-3" \h \z \uHYPERLINK \l "_Toc359478386" 第1章绪论 PAGEREF_Toc359478386 \h 1HYPERLINK \l "_Toc359478387" 1.1 背景 PAGEREF_Toc359478387 \h 1HYPERLINK \l "_Toc359478388" 1.2 设计目的与任务 PAGEREF _Toc359478388 \h 1HYPERLINK \l "_Toc359478389" 1.2.1 本课程设计的目的 PAGEREF _Toc359478389 \h 1HYPERLINK \l "_Toc359478390" 1.2.2 本课程设计的任务 PAGEREF _Toc359478390 \h 1HYPERLINK \l "_Toc359478391" 第2章汇编语言的运行环境及运行步骤 PAGEREF _Toc359478391 \h 2HYPERLINK \l "_Toc359478392" 2.1 汇编语言的起源 PAGEREF _Toc359478392 \h 2HYPERLINK \l "_Toc359478393" 2.2 汇编语言的特点 PAGEREF _Toc359478393 \h 2HYPERLINK \l "_Toc359478394" 2.2.1 能够保持机器语言的一致性,直接、简捷 PAGEREF _Toc359478394 \h 2HYPERLINK \l "_Toc359478395" 2.2.2 目标代码简短,占用内存少,执行速度快 PAGEREF _Toc359478395 \h 2HYPERLINK \l "_Toc359478396" 2.2.3 汇编语言是面向机器的PAGEREF _Toc359478396 \h 2HYPERLINK \l "_Toc359478397" 2.2.4 难于从汇编语言代码上理解程序设计意图,可维护性差 PAGEREF _Toc359478397 \h 2HYPERLINK \l "_Toc359478398" 2.2.5 高速度和高效率 PAGEREF _Toc359478398 \h 2HYPERLINK \l "_Toc359478399" 2.3 汇编语言的运行环境 PAGEREF _Toc359478399 \h 3HYPERLINK \l "_Toc359478400" 2.4 汇编语言的运行步骤 PAGEREF _Toc359478400 \h 3HYPERLINK \l "_Toc359478401" 第3章总体设计思路 PAGEREF _Toc359478401 \h 6HYPERLINK \l "_Toc359478402" 3.1 功能设计分析 PAGEREF_Toc359478402 \h 6HYPERLINK \l "_Toc359478403" 3.1.1 设计思路分析 PAGEREF _Toc359478403 \h 6HYPERLINK \l "_Toc359478404" 3.1.2 系统功能分析: PAGEREF _Toc359478404 \h 6HYPERLINK \l "_Toc359478405" 3.2 总体设计分析 PAGEREF_Toc359478405 \h 6HYPERLINK \l "_Toc359478406" 3.2.1 系统功能模块图 PAGEREF _Toc359478406 \h 6HYPERLINK \l "_Toc359478407" 3.2.2 具体设计方案 PAGEREF _Toc359478407 \h 6HYPERLINK \l "_Toc359478408" 第4章程序实现 PAGEREF_Toc359478408 \h 8HYPERLINK \l "_Toc359478409" 4.1 运行程序 PAGEREF_Toc359478409 \h 8HYPERLINK \l "_Toc359478410" 4.1.1 单步运行 PAGEREF_Toc359478410 \h 8HYPERLINK \l "_Toc359478411" 4.1.2 暂停执行程序 PAGEREF _Toc359478411 \h 8HYPERLINK \l "_Toc359478412" 4.1.3 连续运行程序 PAGEREF _Toc359478412 \h 8HYPERLINK \l "_Toc359478413" 4.2 各个模块程序流程图设计PAGEREF _Toc359478413 \h 9HYPERLINK \l "_Toc359478414" 4.2.1 第一模块输入字符串PAGEREF _Toc359478414 \h 9HYPERLINK \l "_Toc359478415" 4.2.2 第二模块字符串排序PAGEREF _Toc359478415 \h 9HYPERLINK \l "_Toc359478416" 4.2.3 第三模块输出字符串PAGEREF _Toc359478416 \h 10HYPERLINK \l "_Toc359478417" 第5章遇到问题及解决方法PAGEREF _Toc359478417 \h 12HYPERLINK \l "_Toc359478418" 5.1 所遇到的问题 PAGEREF_Toc359478418 \h 12HYPERLINK \l "_Toc359478419" 5.2 对应问题的解决方法 PAGEREF _Toc359478419 \h 12HYPERLINK \l "_Toc359478420" 总结 PAGEREF_Toc359478420 \h 13HYPERLINK \l "_Toc359478421" 致谢 PAGEREF_Toc359478421 \h 14HYPERLINK \l "_Toc359478422" 参考文献 PAGEREF_Toc359478422 \h 15HYPERLINK \l "_Toc359478423" 附录 PAGEREF_Toc359478423 \h 16HYPERLINK \l "_Toc359478424" 源程序代码: PAGEREF_Toc359478424 \h 16第1章绪论1.1 背景计算机技术作为信息化的核心技术受到全社会的普遍重视。
微机原理第三次实验报告

实验三DOS中断调用实验实验报告健行理工1402班陈丽红 201424450202一、实验目的掌握字符和数据的显示方法。
二、实验内容先显示信息“INPUTSTRING,THE END FLAG IS $”再接收字符。
如为0-9,则计数器加1,并显示计数,如为非数字,则直接显示,但不计数。
三、程序框图开始段寄存器和堆栈段初始化数字字符计数器清0回车换行显示提示信息接收键入字符并显示是$字符调用QUI,返回DOS结束是回车键是0-9计数器BX加1,保存计数器的值后将其转化为ASCII码回车换行显示计数结果回车换行调用DISP,显示字符YNYYNN四、程序说明本次实验重点在于了解中断调用的步骤:(1)准备入口参数;(2)功能号送AH;(3)执行INT n命令,熟练掌握向量号21H的部分常用功能调用。
程序设计时通过对输入的字符进行判断,根据判断结果进入不同的子程序段运行,显示运行结果。
五、源程序清单与执行结果5.1 源程序清单DATA SEGMENT ;定义数据段,DATA为D1 DB 'INPUTSTRING, THE LAST FLAG IS', 0DH, 0AH,'$' 段名,将信息存放在D2 DB 0DH, 0AH, '$' D1,D2中DATA ENDSSTACK SEGMENT STACK ;定义堆栈段DB 100 DUP(?)STACK ENDSCODE SEGMENT ;说明代码段、数据段、堆栈段 ASSUME CS:CODE,DS:DATA,SS:STACKBG: MOV AX,DATAMOV DS, AX ;给DS赋段值MOV BX, 0 ;数字字符计数器BX清0JMP L1 ;跳转至L1QUI: MOV AH,4CH ;返回DOSINT 21HDISP: MOV DX,OFFSET D2 ;输出回车换行MOV AH,9HINT 21HMOV AH,2H ;显示AL中的字符内容MOV DL,ALINT 21HL1: MOV DX,OFFSET D2 ;输出回车换行MOV AH,9HINT 21HMOV DX,OFFSET D1 ;输出“INPUTSTRING,THE END FLAG IS” MOV AH,9HINT 21HMOV AH,1H ;键盘输入并显示INT 21HCMP AL,'$' ;判断输入字符是否为'$'JE QUI ;是则调用QUI,返回DOSCMP AL,0DH ;判断输入字符是否为回车,是则输出 JNE L2 回车换行,进入下一次L1循环,不是MOV DX,OFFSET D2 则跳转至L2MOV AH,9HINT 21HJMP L1L2: CMP AL,'9' ;判断输入字符是否为0-9,是则计数 JA DISP 器BX加1,不是则跳转至DISPCMP AL,'0'JB DISPINC BXPUSH BX ;将BX的内容压入堆栈,保存ADD BX,30H ;将BX中的数值转化为ASCII码MOV DX,OFFSET D2 ;输出换行MOV AH,9HINT 21HMOV AH,2H ;显示计数MOV DL,BLINT 21HPOP BX ;弹出BX的内容JMP L1CODE ENDSEND BG5.2 执行结果截图(1)接收字符为0-9,计数器加1,并显示计数。
微机原理实验三实验报告

实验3. 循环程序设计一、实验目的⒈掌握移位指令的使用方法。
⒉学会循环结构程序的编程方法。
⒊利用DEBUG调试程序查看循环程序循环过程中CS和IP的变化情况。
二、实验要求⒈编写程序并上机调试,记录运行结果。
⒉用DEBUG调试程序调试所编程序,查看并记录每条指令内存单元地址及执行结果(包括F标志寄存各位值。
)⒊注意观察并记录每条指令执行后CS和IP寄存器值变化情况,以加深对循环程序的概念的理解。
三、实验内容⒉编写统计15个学生数学学习成绩程序。
要求:分别统计出低于60分,60-69分,70-79分,80-89分,90-100分的人数,并存放到S5,S6,S7,S8,S9,S10对应内存单元中。
源程序代码;DATA SEGMENTDATA1 DB 55,60,65,88,67,70,75,80,77,85,90,66,95,53,100DATA2 DB 5 DUP(?)DATA ENDS;CODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV CX,15LEA SI,DATA1LEA DI,DATA2AGAIN:MOV AL,[SI]CMP AL,90JB NEXT1INC BYTE PTR[DI]JMP NEXT0NEXT1:CMP AL,80JB NEXT2INC BYTE PTR[DI+1]JMP NEXT0NEXT2:CMP AL,70JB NEXT3INC BYTE PTR[DI+2]JMP NEXT0NEXT3:CMP AL,60JB NEXT4INC BYTE PTR[DI+3]JMP NEXT0NEXT4:INC BYTE PTR[DI+4]NEXT0:INC SILOOP AGAINMOV AH,4CHINT 21HCODE ENDSEND START程序运行结果截图:四、实验总结本次实验掌握移位指令的使用方法。
微机原理实验报告

校区实验报告课程名称____________________________ 专业班级_____________________________ 学生及学号____________________________指导教师____________________________实验地点————————————————2015 ~2016 学年第二学期《微机原理与接口技术》实验一(1)实验名称存贮器部数据传送姓名系院专业电子信息类班级学号实验日期2016.6.14 指导教师成绩一、实验目的和要求1、初步掌握星研集成环境工具软件的使用方法。
2、掌握存储器部不同位置间数据传送的方法。
3、认真预习本节实验容,尝试自行编写程序,填写实验报告。
二、实验容(包括实验步骤和代码)1、编写源程序,要求将数据段中3000H~30FFH 单元的容传送给6000H~60FFH 单元中。
2、编译、连接所编写的源程序。
3、执行程序前,利用存贮器窗口将DS:3000H~300FH 中的数据改为11、22、33、44、55、66、77、88、99、AA、BB、CC、DD、EE、FF、00,存贮器窗口支持数据的直接修改功能,在相对应的地址中直接输入数据即可。
4、进入调试状态后,分别以“全速运行”、“全速断点”、“单步”、“单步进入”等方式运行程序,同时在工作区窗口的CommonRegister 视图中查看本程序所使用的寄存器(CX、DI、SI)容的变化。
5、在如下图所示的存贮器窗口中检查程序运行结果是否正确。
程序如下:.MODEL TINY ;memory mode : tiny.STACK 100 ;堆栈.CODE ;开始程序段START: MOV AX,DATAMOV DS,AXMOV ES,AXNOPMOV CX,100HMOV SI,3000HMOV DI,6000HCLDREPE MOVSBMOV CX,100HMOV SI,3000HMOV DI,6000HREPE CMPSBJNE ERRORTRUE: JMP $ERROR: JMP $END START三、实验结果及其分析1、通过该实验,成功地将数据段中3000H~30FFH 单元的容传送到了6000H~60FFH 单元中。
《微机原理与应用》实验报告

《微机原理与应用》实验报告课程名称:微机原理与应用实验类型:验证性实验项目名称:实验一:平台仿真一、实验目的1.熟悉protues 仿真平台的使用2.掌握 protues ISIS 下8086的仿真流程二、实验内容和原理1、protues ISIS 编辑环境及基本使用2、元件的查找、选取与使用3、连线、标注4、编辑电路原理图5、设置外部代码编译器6、仿真调试三、实验仪器及材料proteus ISIS 7.8四、实验过程1.MASM32配置2.新建工程3.搭建电路图,编写源代码课程名称:微机原理与应用实验类型:验证性实验项目名称:实验二:基本I/O应用一、实验目的1.掌握I/O接口的设计方法;2.掌握Proteus的使用方法3.汇编程序设计实战二、实验实现功能实现开关闭合LED2,LED3,LED6,LED7亮否则LED0,LED1,LED3,LED4亮要求: 1.译码线为A4,A5,A7,A62.74LS245片选信号为IOS33.74LS373片选信号为IOS44.开关接74LS245的B4口三、实验仪器及材料proteus ISIS 7.8四、实验过程1、电路图主电路图译码子电路图如下2、程序代码CODE SEGMENT PUBLIC 'CODE'ASSUME CS:CODESTART:MOV BL,11001100B ;设置LED灯状态L: MOV DX,030H ;将74LS245的地址送到DXIN AL, DX ;读取开关状态并将状态存入ALTEST AL,10H ;检测开关是否闭合JZ N ;若开关闭合则跳转到NNOT BL ;将BL反向,改变LED状态N: MOV AL,BL ;将LED状态存入ALMOV DX,080H ;将74LS373的地址送到DXOUT DX,AL ;将AL的数据写到74LS373的相应端口JMP START ;跳转到START使程序循环CODE ENDSEND START3、程序流程图4、仿真结果如图。
微机原理实验报告三

微型计算机原理与接口技术实验报告一、实验内容实验3 分支结构程序设计实验题目编程实现三分支的符号函数;编程实现将正数N 插入由正数组成的数组ARY 中。
内容提要掌握分支程序的设计,观察通用寄存器、标志寄存器的变化、监测分支点。
二、实验的源代码(.asm文件内容)第一部分——编程实现三分支的符号函数程序如下:DATAS SEGMENTX DB-3Y DB?DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXMOV AL,XCMP AL,0JGE BIGERMOV AL,0FFHMOV Y,ALJMP NEXTBIGER:JE EQULMOV AL,1MOV Y,ALJMP NEXTEQUL:MOV Y,ALNEXT: MOV AH,4CHINT 21HCODES ENDSEND START第二部分:编程实现将正数N 插入由正数组成的数组ARY中程序如下:DATAS SEGMENTX DW?ARY_HEAD DW 2,6,8,13,21,47,53,66,90ARY_END DW 125N DW 18DATAS ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATAS START: PUSH DSXOR AX,AXPUSH AXMOV AX,DATASMOV DS,AXMOV AX,NMOV ARY_HEAD-2,0FFFFHMOV SI,0 COMPARE:CMP ARY_END[SI],AXJLE INSERTMOV BX,ARY_END[SI]MOV ARY_END[SI+2],BXSUB SI,2JMP SHORT COMPARE INSERT: MOV ARY_END[SI+2],AX RETMAIN ENDPCODE ENDSEND START三、实验的(显示)结果Press any key to continue第一部分CV调试结果如下:第二部分CV调试结果如下:四、实验(调试)心得第一部分:调试中出现的问题及解决办法:本来程序中使用的返回DOS的方法是使用程序结束中断INT 20H 指令,但不能正确运行,可能是计算机也可能是软件的问题,然后又修改程序,改使用INT 21H 的4CH号功能调用,这样修改完成后程序便可以正确运行了。
微机原理实验报告

实验一DEBUG 调试实验类型:实验课时:指导教师:时间:2013 年月日课次:第节教学周次:第周实验分室:实验台号:实验员:一、实验目的1.练习使用DEBUG,调试简单汇编程序。
二、实验要求1.掌握DEBUG的使用,调试程序。
2.读懂程序中各条指令,说明程序功能。
三、实验内容1.启动DEBUG,用A命令输入并汇编下列程序段。
100 MOV SI,200103 MOV CX,10106 MOV AL,0108 MOV [SI ],AL10A INC SI10B INC AL10D DEC CX10E JNZ 108110 INT 3四、实验结果及分析实验二简单汇编语言设计实验类型:实验课时:指导教师:时间: 2012 年月日课次:第节教学周次:第周实验分室:实验台号:实验员:一、实验目的1.巩固DEBUG及宏汇编的使用。
2.加深对指令的理解。
二、实验要求1.设堆栈指针SP=2000H,(AX)=3000H,(BX)=5000H。
请编一程序将AX的内容和BX的内容进行交换。
请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。
2.设DS=当前段指地址,(BX)=0300H,(SI)=0002H,请用DEBUG的命令将存储器偏移地址300H~304H连续单元顺序装入0AH、0BH、0CH、0DH、0EH。
在DEBUG状态下送入下面程序,并用单步执行的方法,分析每条指令源地址的形成过程?当数据传送完毕时,AX中的内容是什么?程序清单如下:MOV AX,BXMOV AX,0304HMOV AX,[0304H]MOV AX,[BX]MOV AX,0001[BX]MOV AX,[BX][SI]MOV AX,0001[BX][SI]HLT3.设(AX)=0002H,编一个程序段将AX的内容乘10,要求用移位的方法完成。
三、思想描述实验内容1将两个寄存器的内容进行交换时,必须有一个中间寄存器才能进行内容的交换,如果用堆栈做为中间存储单元,必须遵循先进后出的原则。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三DOS中断调用实验实验报告
健行理工1402班陈丽红 201424450202
一、实验目的
掌握字符和数据的显示方法。
二、实验内容
先显示信息“INPUTSTRING,THE END FLAG IS $”再接收字符。
如为0-9,则计数器加1,并显示计数,如为非数字,则直接显示,但不计数。
三、程序框图
开始
段寄存器和堆栈段初始化
数字字符计数器清0
回车换行
显示提示信息
接收键入字符并显示
是$字符
调用QUI,返回
DOS
结束
是回车键
是0-9
计数器BX加1,保存计数器的
值后将其转化为ASCII码
回车换行
显示计数结果
回车换行
调用DISP,显示字符Y
N
Y
Y
N
N
四、程序说明
本次实验重点在于了解中断调用的步骤:(1)准备入口参数;(2)功能号送AH;(3)执行INT n命令,熟练掌握向量号21H的部分常用功能调用。
程序设计时通过对输入的字符进行判断,根据判断结果进入不同的子程序段运行,显示运行结果。
五、源程序清单与执行结果
5.1 源程序清单
DATA SEGMENT ;定义数据段,DATA为
D1 DB 'INPUTSTRING, THE LAST FLAG IS', 0DH, 0AH,'$' 段名,将信息存放在
D2 DB 0DH, 0AH, '$' D1,D2中
DATA ENDS
STACK SEGMENT STACK ;定义堆栈段
DB 100 DUP(?)
STACK ENDS
CODE SEGMENT ;说明代码段、数据段、堆栈段 ASSUME CS:CODE,DS:DATA,SS:STACK
BG: MOV AX,DATA
MOV DS, AX ;给DS赋段值
MOV BX, 0 ;数字字符计数器BX清0
JMP L1 ;跳转至L1
QUI: MOV AH,4CH ;返回DOS
INT 21H
DISP: MOV DX,OFFSET D2 ;输出回车换行
MOV AH,9H
INT 21H
MOV AH,2H ;显示AL中的字符内容
MOV DL,AL
INT 21H
L1: MOV DX,OFFSET D2 ;输出回车换行
MOV AH,9H
INT 21H
MOV DX,OFFSET D1 ;输出“INPUTSTRING,THE END FLAG IS” MOV AH,9H
INT 21H
MOV AH,1H ;键盘输入并显示
INT 21H
CMP AL,'$' ;判断输入字符是否为'$'
JE QUI ;是则调用QUI,返回DOS
CMP AL,0DH ;判断输入字符是否为回车,是则输出 JNE L2 回车换行,进入下一次L1循环,不是
MOV DX,OFFSET D2 则跳转至L2
MOV AH,9H
INT 21H
JMP L1
L2: CMP AL,'9' ;判断输入字符是否为0-9,是则计数 JA DISP 器BX加1,不是则跳转至DISP
CMP AL,'0'
JB DISP
INC BX
PUSH BX ;将BX的内容压入堆栈,保存
ADD BX,30H ;将BX中的数值转化为ASCII码
MOV DX,OFFSET D2 ;输出换行
MOV AH,9H
INT 21H
MOV AH,2H ;显示计数
MOV DL,BL
INT 21H
POP BX ;弹出BX的内容
JMP L1
CODE ENDS
END BG
5.2 执行结果截图
(1)接收字符为0-9,计数器加1,并显示计数。
(2)接收字符为非数字,则直接显示,但不计数,接收字符为0-9时继续计数。
(3)接收字符为‘$’,返回DOS。