西安交大微机实验报告二
- 格式:docx
- 大小:378.89 KB
- 文档页数:5
西安交通大学微型计算机接口技术实验报告班级:物联网姓名:学号:实验一基本I/O扩展实验一、实验目的1、了解 TTL 芯片扩展简单 I/O 口的方法,掌握数据输入输出程序编制的方法;2、对利用单片机进行 I/O 操作有一个初步体会。
二、实验内容74LS244 是一种三态输出的8 总线缓冲驱动器,无锁存功能,当G 为低电平时,Ai 信号传送到Yi,当为高电平时,Yi 处于禁止高阻状态。
74LS273 是一种8D 触发器,当CLR 为高电平且CLK 端电平正跳变时,D0——D7 端数据被锁存到8D 触发器中。
实验原理图:三、实验说明利用74LS244 作为输入口,读取开关状态,并将此状态通过74LS273 再驱动发光二极管显示出来,连续运行程序,发光二极管显示开关状态。
四、实验流程图五、实验连线1、244的cs连接到CPU地址A15,Y7—Y0连接开关K1-K8;2、273的CS连接到CPU地址A14,Q7-Q0连接到发光二极管L1-L8;3、该模块的WR,RD连接CPU的WR,RD,数据线AD7-AD0,地址线A7-A0分别与CPU的数据线AD7-AD0,地址线A7-A0相连接。
六、程序源代码(略)七、实验结果通过开关K01 到K08 可以对应依次控制LED 灯的L1 到L8 ,即当将开关Ki 上拨时,对应的Li 被点亮,Ki 下拨时,对应的Li熄灭。
此外,如果将开关拨到AAH 时,将会产生LED 灯左移花样显示;如果开关拨到55H 时,将会产生LED 灯右移花样显示。
七、实验心得通过本次实验,我了解了TTL 芯片扩展简单I/O 口的方法,同时也对数据输入输出程序编制的方法有一定的了解与掌握,对利用单片机进行I/O 操作有一个初步体会,实验使我对自己在课堂上学的理论知识更加理解,同时也锻炼了我的动手操作能力。
实验二可编程定时计数器8254实验一、实验目的1、了解可编程定时器/计数器8254 实验了解计数器的硬件连接方法及时序关系;2、掌握8254 的各种模式的编程及其原理,用示波器观察各信号之间的时序关系。
实验一数据传送、算术运算、循环程序结构实验目的:1 •熟悉8086汇编语言源程序的框架结构,并掌握汇编语言程序的编写、汇编、 连接、执行的过程,并利用 Turbo Debugger 调试汇编程序。
2. 熟悉8086指令系统的数据传送指令,掌握寻址方式。
3. 熟悉8086指令系统的算术运算指令。
掌握循环结构汇编语言程序的编制。
实验内容:1、P121 14 题程序框图:DW 128 DUP ⑺STACKS ENDSDATAS SEGMENT;数据DATA SEGMENTORG 1000HBCD1 DD 90000010H,12345678HORG 2000HBCD2 DD 90000020H,23456789H;堆栈段 源代码:STACKS SEGMENT STACKDATA ENDSCODES SEGMENT;代码段ASSUMECS:CODES,DS:DATASSTART: MOVAX,DATAS;初始化MOV DS,AXMOV CX,8 ;循环次数 MOV BX,0 ;指针 CLCJ进位清零L00P1: MOVAL,[BX+1000H];BCD1 ADCAL,[BX+2000H];BCD1+BCD2AAA J分离修正MOV [BX+2000H],AL;移到要求的位置INC BX ;指针指向下一个子节LOOPLOOP1MOV AX,4C00H ;退出程INT 21HCODES ENDSSTART结果:2、P121 15 题程序框图: 源代码:STACKS SEGMENT STACK;堆栈段DW 128 DUP ⑺STACKS ENDS DATAS SEGMENT;数据段ENDORGDB2000H 80H,81H,82H,83H,00H,01H,02H,03H,84H,85H DATAS ENDSCODES SEGMENT ;代码段 START: L1:LODSBL2:LOOP L1 ASSUMECS:CODES,DS:DATASMOVAX,DATAS;初始化 MOV DS,AX MOVSI,2000H J MOV CX,10 ;字节数 MOV DL,0FFH ;最小的有符- CMP AL,DLJNG L2MOV DL,ALMOV DS:[2000H],DL MOV AX,4C00H ;退出程序 INT 21H ;最大数存入2000h 单号字节数据CODES ENDS END START 3、P195 6 题 程序框图源代码:STACKS SEGMENTDWSTACK128 DUP(?);堆栈段JSTACKS ENDSDATAS SEGMENT;数据段ORG1000HN1DW1111HN2DW2222HN3DW3333HM1DW0M2DW0M3DW0DATAS ENDSCODES SEGMENT;代码段ASSUME CS:CODES,DS:DATAS START:MOV AX,DATAS;初始化MOV DS,AXMOV AX,N2MUL N3;B*CMOV M3,AXMOV M2,DXMOV AX,N3MUL N1;A*CADD M2,AXADC M1,DXMOV AX,4C00H;退出程序INT 21HCODES ENDSEND START结果:醪DOSBox DJ4h Cpu speedt 3000 cycles. Frames kip 0, Program: DEBUGS Trace Irrterrupt-tAX-1CBS BX=O900 CX=1137 »S=1C 庐ES=1C35 SS=1CA5 1DB6:00G5 A1GZ10Trftce Interruptkd ds:1000 DX=O0OO SP=G10O BP=0900 SI=G0OO DI=0OQO CS=1DB6 IP=O00g MU UF DI PL NZ NA FO NC MOU AX^ElOOgJ1CB5: IODO 11 11 E乙祝33 33 1CB5:1010 BB B5 1C BE D8 fit 1CB5:1020 16 G6;10 Al 04 10 1CB5: 1G30 66 10 B8 60 处CD 1CB5:1CHQ e© 00 00 00 00 00 ***Dup1icate Line(s)*** 1CB5:10?0 GO 0© 00 00 QG 00rogram terminated BC = 0 M lcbS:ICG©1CB5:1600 11 11 22 22 33 33 1CB5:10101C 8E D6 Al1C跖:1G2O 16 66 10 Al CH 10 1CB5: 1G30 66 10 B8 D0 4C CD 1CB5:164Q ©0 Q0 00 00 00 GO k**Duplicate Linets)*** 1CB5:1670 GO 00 00 GO GO 00 kx 00 00-00 00 00 00 00 GE 10-F?昂€4 10 A3F7 Z6-00 10 61 06 6821 GG-00 GO eo oe 0000 00-00 00 60 00 0000 <30-00 0069 GG-36GEF7Z10010-F726-00O0-0GGO-00D0261000004、P196 12 题程序框图36eA&81&&©'01OOw■ n i_r P ■■■■■:RS*,X? *,w®,...?..u&.....8.LM!……00C6€40100GO921006000000A3080000载囹己臭制在QQ或者wo胡文档中右■■ U ■ X J H Ta ■ BI ■ A ■■00 00-00 00 G0 00 00 G0 00 00 ......................................源代码:STACKS SEGMENT STACK ;堆栈段DW 128 DUP⑺;STACKS ENDSDATAS SEGMENT ;数据段STRING1 DB'AAAA'STRING2 DB'AAAa'DATAS ENDSCODES SEGMENT ;代码段ASSUME CS:CODES,DS:DATASAXQATAS ;初始化DS,AX AX,DS ES,AX SI,STRING1 DI,STRING2 CX,4STRING1,STRING2 LABNE AL,'Y' EXIT AL,'N'AX,4C00H ;退出程序 21H结果:[>0: ■ J ir ] IPLL L J59H 是N 的ascII 码实验中出现的问题及解决:总体来说,实验中最大的阻碍是 64位系统不能使用masm 或者轻松汇编等软件,造成了许多困难,解决办法是在网上下载了dosbox ,输入命令 mount ch:\study\masm, h:\study\masm 是我电脑中masm.exe 所在的位置,不知道什么原因masm611用不了这个方法,在网上重新下载了 masm5,和debug32至此,算是 解决了“非编程困难”。
微型计算机原理与接口技术第一次实验报告实验者姓名:实验者学号:所在班级:报告完成日期:20年月日实验二分支程序的设计一、实验目的1.学习提示信息的显示及键盘输入字符的方法。
2.掌握分支程序的设计方法。
二、实验内容在提示信息下,从键盘输入原码表示的二位十六进制有符号数。
当此数大于0时,屏幕显示此数为正数;当此数小于0时,屏幕显示此数为负数;当此数等于0时,屏幕显示此数为零。
三、实验调试过程利用-u命令进行反汇编,结果如下。
三个CMP语句运行完的地址如图所示,第一个CMP运行完的是29H输出结果的地址如下图所示:首先对输入为负数时进行验证:输入FFH,设置一个断点在29H,利用-t命令观察跳转,结果如图:可以看到,程序最终正确的转入输出负的分支。
再输入正数11H,利用-t观察整个比较过程如下:可以看到,程序最终正确的转入输出正的分支。
最后输入00H,利用-t观察整个比较过程如下:可以看到,程序最终正确的转入输出0的分支。
四、实验框图及程序代码实验框图:程序代码:CRLF MACROMOV AH,02HMOV DL,0DHINT 21HMOV AH,02HMOV DL,0AHINT 21HENDMDA TA SEGMENT;定义结果信息MESS1 DB 'INPUT DATA:',0DH,0AH,'$'MESS2 DB 'THIS DATA IS+',0DH,0AH,'$'MESS3 DB 'THIS DATA IS-',0DH,0AH,'$'MESS4 DB 'THIS DATA IS ZERO',0DH,0AH,'$'DA TABUF DB 3 ;定义最大可输入字符长度ACTLEN DB ? ;实际输入字符长度STRING DB 3 DUP(?) ;输入字符缓冲区DA TA ENDSSSEG SEGMENT PARA STACK 'STACK'DB 50 DUP(0)SSEG ENDSCODE SEGMENTASSUME CS:CODE,SS:SSEG,DS:DA TASTART:MOV AX,DATAMOV DS,AXMOV AX,SSEGMOV SS,AXMOV DX,OFFSET MESS1MOV AH,09HINT 21HMOV AH,0AHMOV DX,OFFSET DATABUFINT 21HCRLFMOV AL,STRINGCMP AL,38HJAE ISNEGCMP AL,30HJNZ ISPOSMOV AL,[STRING+1]CMP AL,30HJNZ ISPOSJMP ISZEROISPOS:MOV DX,OFFSET MESS2MOV AH,09HINT 21HJMP DONEISNEG:MOV DX,OFFSET MESS3MOV AH,09HINT 21HJMP DONEISZERO:MOV DX,OFFSET MESS4MOV AH,09HINT 21HJMP DONEDONE:MOV AX,4C00HINT 21HCODE ENDSEND START五、实验结果及分析编写的汇编程序EX2.ASM经过汇编MASM与链接LINK生成可执行文件EX2.EXE,测试如下:可见,程序能够正确判断输入数据的正、负、零情况。
一:实验目的和要求
(1)了解完整的PCB板设计工序及方法;
(2)掌握制作元件原理图库、封装库的方法;
(3)掌握PCB板设计方法及其后处理;
(4)学习并掌握Protel DXP软件平台。
二:实验用仪器和软件环境
(1)微机(最低配置: Pentium 4 CPU, 128M内存);
(2)Protel DXP 2004软件;
(3)Windows XP环境
三:实验设计题目及实现的功能
本实验要求在Protel DXP软件平台上设计AVR单片机开发板电路的PCB板,根据学号分配任务,我要画的是RST、OSC、Power 、JTAG、LED、红外的电路图及对应的PCB板。
Protel DXP允许你从原理图直接运行一个大型电路仿真的阵列,通过仿真,可以显示它的波形。
四:实验步骤及结果
(1)创建一个新项目
(2)创建一个新的原理图图纸
电路图
显示器元件图
(3)设置项目选项
(4)创建一个新的PCB文件。
模拟电子技术实验实验报告西安交通大学电信学院计算机11班姓名:司默涵电话:187****7918学号:2110505018实验日期:2013年4月日报告完成日期:2013年4月日实验 2.2 含负反馈的多级晶体管放大电路预习报告一、实验目的1.构建多级共射极放大电路,对静态工作点、放大倍数进行调节,使其满足设计要求。
2.测量多级放大电路的放大倍数、输入电阻、输出电阻和频率特性。
3.在多级放大电路中引入电压串联负反馈。
4.测量负反馈电路的放大倍数、输入电阻、输出电阻和频率特性等,并与开环放大电路相应的技术指标进行比较。
二、实验原理本实验要求将2个共射极单管放大电路,按照阻容耦合方式进行级联,并在此基础上,由输出端引入电压串连负反馈。
对整个电路的要求,一般靠各个放大电路的指标体现。
因此,需要事先对单元电路的指标提出要求。
本实验中,我们首先构建一个多级的、开环放大倍数大于2000的放大电路,并在此基础上引入电压串联负反馈。
1.多级放大电路图2.2.1为一个2级共射极放大电路。
与图2.1.1所示电路的主要区别是,这个电路具有稳定静态工作点的作用。
第一级和第二级的静态工作点互不干扰,第一级放大电路的静态分析如下,第二级静态分析类推:根据晶体管微变等效电路,对放大电路的动态分析如下:当和相差较大时,为其中较大的。
当和接近时,根据电路参数和实际调试结果,在晶体管β大约为100左右时,整个放大电路的电压放大倍数约为几千倍,输入电阻约为2kΩ左右,输出电阻约为1kΩ左右,下限截止频率约为100Hz左右,上限截止频率约为30kHz左右。
当然,上述参数只是一个大致范围,具体指标将与各自电路参数有关。
电路调节过程如下:1) 首先按照图2.2.1在面包板上搭接电路;2) 在C2右端观察输出,按照实验2.1方法,对前级电路进行静态工作点调节;3) 从C2左端断开,按照实验2.1方法,对后级放大电路单独调节静态工作点;4) 重新连接电路,测试放大倍数,此时两个放大器都处于最佳的静态工作点,观察电压放大倍数是否满足大于2000的要求;如果满足,则调试结束;5) 如果不满足,则增加前级的R C,或者减小R W1,此时静态工作点开始向饱和区靠拢,就是牺牲了最佳静态工作点,获取满足要求的电压放大倍数。
西安交通大学汇编第二次上机实验报告范文提交上机结果的模板文件第2次线上上机班级学号姓名1、循环程序设计-1(1)汇编、连接后的截图TODO:你的截图(必选)TODO:你的文字解释说明(可选)说明:mam某un得到某un.obj,某un.crf,某un.lt文件,通过link 某un得到某un.map文件,显示编译成功。
(2).lt文件的截图,TODO:你的截图(必选)TODO:你的文字解释说明(可选)说明:通过mam对程序进行编译时生成.lt文件,通过notepad++打开.lt文件,并进行截图(3)反汇编的截图TODO:你的截图(必选)TODO:你的文字解释说明(可选)说明:在debug环境下执行u指令,显示出反汇编代码。
(4)在完成DS赋值后,立即显示各个寄存器的值TODO:你的截图(必选)TODO:你的文字解释说明(可选)说明:按单步t之后,下方出现MOVDS,A某,即下一条即将执行的指令为MOVDS,A某,再按一次t,此时DS被赋值,此时执行的r指令显示的就是DS赋值后各个寄存器的值。
(5)在进行计算前,显示数组M开始的n+2个字的内存值的截图(只能显示这n+2个字的内存值,多显示、少显示均扣分)TODO:你的截图(必选)TODO:你的文字解释说明(可选)说明:在debug环境下,执行d指令显示内存,由于不能显示其他字的内存值,所以只能一行一行截图,可以看到,此时内存值与程序初始定义值相同。
(6)执行完计算后,立即显示各个寄存器的值TODO:你的截图(必选)TODO:你的文字解释说明(可选)说明:先执行g指令到执行回到do系统指令,此时显然已经执行完运算,此时执行r指令就获得执行完运算后各个寄存器的值。
(7)执行完计算后,显示数组M开始的n+2个字的内存值的截图(只能显示这n+2个字的内存值,多显示、少显示均扣分)TODO:你的截图(必选)TODO:你的文字解释说明(可选)说明:执行d指令显示出内存值,由于要求是不能显示其他字的值,所以只能一行一行截图,可以看到此时内存值与期望结果相同。
东南大学《微机实验及课程设计》实验报告实验二汇编语言程序设计姓名:学号:专业:实验时间:2011年04月18日报告时间:2010年04月23日评定成绩:审阅教师:一. 实验目的1)进一步熟悉汇编语言程序的编辑、宏汇编、链接、运行基本概念;2)熟练掌握动态调试程序TD/DEBUG的常用命令或窗口功能,学会用TD/DEBUG调试程序,修改数据和寄存器等环境;3)熟悉掌握汇编语言程序的典型数据结构设计、典型程序流控制方法,了解DOS/BIOS功能调用的基本方法。
二. 方案实现与测试(一)实验环境实验环境同实验一(二)实验步骤(1)编写程序实现如下功能;①从键盘输入任意字符串后,存入自定义存储单元,判断处理后将字符串中小写字母转换为大写字母(其他字符不变)并按原顺序将这些字符在屏幕上显示出来,并显示字符串“The total number is XXXXX”②从键盘输入在0-65535之间的十进制数,将其转换为16进制数并在屏幕中显示出来,要求判断输入字符串是否为在0-65535之间的十进制数。
③题目同上,在输入数值时采用按位判断方法,即每位数字输入是判断,如果不符合则拒绝输入该字符,并将符合的字符存入。
(2)复习功各种操作,并用DEBUG调试程序,学会基本命令操作,并通过单步、设置断点等方法观察中间结果,完成正常运行。
命令行方式下直接键入debug myfile.exe回车(myfile为待调试可执行程序),进入调试方式(显示—),键入H回车显示全部命令、格式和功能。
常用命令有;U(反汇编)、A(汇编输入指令程序)、R(寄存器显示/修改)、I(端口输入)、0(端口输出)、D(显示数据)、E(修改数据)。
除资源修改管理功能外,重点应用T(单步)、Tn(执行n步)、P(过程/指令)、G××××(从当前器:IP执行到断点××××)或G=××××l ××××2(从××××l执行到××××2断点)调试实驴程序。
西安交通大学实验报告第页共页课程微机原理与接口技术实验系别生物医学工程实验日期年月日专业班级组别交报告日期年月日姓名学号报告退发 (订正、重做)同组者教师审批签字实验名称综合设计实验一、实验目的:1、掌握结构化汇编语言程序设计;2、掌握8253、8259的初始化和操作编程;3、熟悉LED数码管的动态驱动。
二、实验设备1、Lab6000p实验教学系统;2、IBM-PC机三、实验内容1、实验要求以4MHz为时钟基准,设计一个电子钟,在LED数码管显示时钟,格式如下:XX XX XX 由左向右分别为:时、分、秒。
2、提示8253工作于定时方式,即对4MHz或分配后的基准时钟脉冲进行计数,8253定时器每100us中断一次,在中断服务程序中,对中断次数进行计数,100us计数10000次就是1秒。
然后再对秒计数得到分和小时值,并送入显示缓冲区显示。
四、实验程序代码; 本实验利用8253做定时器,用定时器输出的脉冲控制8259产生中断; 在8259中断处理程序中,对时、分、秒进行计数,在等待中断的循; 环中用LED显示时间。
; 8253用定时器/计数器1,8253片选接CS4,地址为0C000H。
8253时钟; 源CLK1接分频电路的F/64输出。
分频器的Fin接4MHz时钟。
8253的; GATE1接VCC。
; 8259中断INT0接8253的OUT1,片选接CS5,地址为0D000H。
; 显示电路的KEY/LED CS 接CS0,地址为08000H。
;CONTROL equ 0c003hCOUNT0 equ 0c000hCOUNT1 equ 0c001hCOUNT2 equ 0c002hmd8255 equ 82h ; 8255 工作方式PA8255 equ 8000h ; 8255 PA口输出地址CTL8255 equ 8003h ; 8255 控制口地址OUTBIT equ 08002h ; 位控制口OUTSEG equ 08004h ; 段控制口ICW1 equ 00010011b ; 单片8259, 上升沿中断, 要写ICW4ICW2 equ 00100000b ; 中断号为20HICW4 equ 00000001b ; 工作在8086/88 方式OCW1 equ 11111110b ; 只响应INT0 中断CS8259A equ 0d000h ; 8259地址CS8259B equ 0d001hdata segmentCNT db 0LEDBuf db 6 dup(?) ; 显示缓冲Num db 1 dup(?) ; 显示的数据DelayT db 1 dup(?)Hour db 0Minute db 0Second db 0LEDMAP: ; 八段管显示码db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07hdb 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h data endscode segmentassume cs:code, ds: dataDelay proc nearpush ax ; 延时子程序push cxmov al, 0mov cx,axloop $pop cxpop axretDelay endpDisplayLED proc nearmov bx, offset LEDBufmov cl, 6 ; 共6个八段管mov ah, 00100000b ; 从左边开始显示DLoop:mov dx, OUTBITmov al, 0out dx,al ; 关所有八段管mov al, [bx]mov dx, OUTSEGout dx,almov dx, OUTBITmov al, ahout dx, al ; 显示一位八段管push axmov ah, 1call Delaypop axshr ah, 1inc bxdec cljnz DLoopmov dx, OUTBITmov al, 0out dx,al ; 关所有八段管retDisplayLED endpIEnter proc nearpush axpush dxinc Secondmov al, Secondcmp al, 60jne Exitmov Second, 0inc Minutemov al, Minutecmp al, 60jne Exitmov Minute, 0inc Hourmov al, Hourcmp al, 24jne Exitmov Hour, 0Exit:mov dx, CS8259Amov al, 20h ; 中断服务程序结束指令out dx, alpop dxpop axiretIEnter endpIInit procmov dx, CS8259Amov al, ICW1out dx, almov dx, CS8259Bmov al, ICW2out dx, almov al, ICW4out dx, almov al, OCW1out dx, alretIInit endpstart proc nearmov ax, datamov ds, axmov Hour, 0mov Minute, 0mov Second, 0climov ax, 0mov ds, axmov al, 76h; 01110110B ; 计数器1,16位,方式3,二进制mov dx, CONTROLout dx, almov ax, 62500mov dx, COUNT1out dx, al ; 计数器低字节mov al, ahout dx, al ; 计数器高字节mov al, MD8255mov dx, CTL8255out dx, almov bx, 4*ICW2 ; 中断号mov ax, codeshl ax, 4 ; x 16add ax, offset IEnter ; 中断入口地址(段地址为0)mov [bx], axmov ax, 0inc bxinc bxmov [bx], ax ; 代码段地址为0call IInitmov ax, datamov ds, axmov CNT, 0 ; 计数值初始为0mov al, CNTmov dx, PA8255out dx, alstiLP: ; 等待中断,并计数。
微机(wēi jī)原理第一次实验报告一.实验(shíyàn)目的(1) 学习8086/8088指令系统中一些基本(jīběn)指令的用法和程序设计的基本方法。
(2) 熟悉PC机上建立、汇编、连接(liánjiē)、调试和运行8086、8088汇编语言程序的全过程。
(3) 学习提示信息的显示及键盘输入字符的方法。
(4) 掌握分支程序的设计方法。
二.实验内容(1) 设a,b,c,d四个数分别以单字节压缩BCD码形式存放在内存NUM开始的四个单元,计算(a+b)-(c+d)并将结果放在Y1单元中,将结果在屏幕上显示出来。
在debug中不断改变a,b,c,d内容并查看结果。
1. a=09, b=06, c=04, d=072. a=38, b=41, c=29, d=343. a=70, b=23, c=42, d=414. a=63, b=73, c=62, d=50(2) 在提示信息下,从键盘输入原码表示的二位十六进制有符号数,当此数大于0时,屏幕上显示此数为正数;当此数小于0时,屏幕上显示此数为负数;当此数为0时,屏幕上显示此数为零。
三.实验调试过程3.1 题目一调试过程C:\<DEBUG ONE.EXE-U 反汇编-R 查看(chákàn)寄存器变量值观察(guānchá)到0005时已完成(wán chéng)数据初始化,利用(lìyòng)g 5追踪到此处利用-d0指令查看内存单元,在偏移地址为0,1,2,3的地方有9,6,4,7,正是我们在代码中赋的初值。
-g d,观察(guānchá)到此时AL已赋值a=15H-g 16,计算(jì suàn)出a+b的值并赋给AL,值为0b,正确(zhèngquè)-g 19,DAA调整后AL变为11,计算(jì suàn)正确-g 1b,cl=04H成功赋值给AL,正确-g 1f,计算出(a+b)-(c+d)结果为04H,正确题目(tímù)二程序调试过程-U0, 反汇编-g 5,程序执行到此处时,完成(wán chéng)DS寄存器赋值DS=0B5EH-g a,程序执行到此处时,完成(wán chéng)SS寄存器赋值SS=0B69H-g 24,程序执行到此处,实现提示信息输出(shūchū)INPUT DATA:,手动输入C9-U-g 2f,程序执行到此处,成功(chénggōng)跳转,显示信息“THIS DATA IS –“四.程序(chéngxù)及框图4.1 题目(tímù)一程序DSEG SEGMENT ;定义数据段NUM DB 13H,27H,11H,12H ;定义(dìngyì)a,b,c,dY1 DB ?DSEG ENDS ;数据段定义结束SSEG SEGMENT PARA STACK ;定义堆栈段DB 20 DUP(?)SSEG ENDS ;堆栈段定义结束CSEG SEGMENT ;定义代码段ASSUME CS:CSEG,DS:DSEG,SS:SSEG ;各段定义(dìngyì) START: MOV AX,DSEGMOV DS,AX ;数据段段(duàn duàn)地址送DSMOV AX,SSEGMOV SS,AX ; 堆栈段段(duàn duàn)地址送SSMOV AL,[NUM]ADD AL,[NUM+1] ;计算(jì suàn)a+bDAA ;压缩BCD码加法调整DAAMOV CL,AL ; 保存a+bMOV AL,[NUM+2]ADD AL,[NUM+3] ;计算c+dDAA ;压缩BCD码加法调整DAASUB CL,AL ;计算(a+b)-(c-d)MOV AL,CLDAS ;DAS调整MOV [NUM+4],AL ;保存结果AND AL,0F0H ;取AL中高四位MOV CL,4SHR AL,CL ;BCD码高位移至低位ADD AL,30H ;AL加30H得ASCII码MOV DL,ALMOV AH,02HINT 21H ;显示DLMOV AL,[NUM+4] ; 恢复ALAND AL,0FH ;取AL低四位ADD AL,30H ;AL加30H得ASCII码MOV DL,ALMOV AH,02HINT 21H ;显示DLMOV AX,4C00HINT 21H ;返回DOSCSEG ENDSEND START ;程序结束4.2 题目二程序CRLF MACRO ;宏定义MOV AH,02HMOV DL,0DHINT 21HMOV AH,02HMOV DL,0AHINT 21H ;显示换行ENDM ;宏结束DATA SEGMENT ;定义数据段MESS1 DB 'INPUT DATA:',0DH,0AH,'$'MESS2 DB 'THIS DATA IS+',0DDH,0AH,'$'MESS3 DB 'THIS DATA IS-',0DH,0AH,'$'MESS4 DB 'THIS DATA IS ZERO',0DH,0AH,'$'DATABUF DB 3 ;定义(dìngyì)最大可输入字符长度 ACTLEN DB ? ;实际(shíjì)输入字符长度STRING DB 3 DUP(?) ;输入(shūrù)字符缓冲区DATA ENDS ;数据(shùjù)段结束SSEG SEGMENT PARA STACK 'STACK' ;定义堆栈段 DB 50 DUP(0)SSEG ENDS ;堆栈段结束CODE SEGMENT ;定义代码段ASSUME CS:CODE,SS:SSEG,DS:DATA ;各段定位START: MOV AX,DATAMOV DS,AX ;DS段寄存器赋值MOV AX,SSEGMOV SS,AX ;SS段寄存器赋值MOV DX,OFFSET MESS1MOV AH,09HINT 21H ;显示提示信息MOV AH,0AHMOV DX,OFFSET DATABUFINT 21H ;接收键入的字符串CRLF ;回车换行MOV AL,STRING ;接收字符高位CMP AL,38H ;比较高位和38H的大小JGE FUSHU ; 若高位>=38H?,跳至FUSHU处执行 CMP AL,30H ;比较高位和30H的大小JE ZERO ;若高位=30H?,跳至ZERO处执行ZHENGSHU: MOV DX,OFFSET MESS2 ;显示输出为正数 MOV AH,09HINT 21HJMP OVERFUSHU: MOV DX,OFFSET MESS3 ;显示输出为负数MOV AH,09HINT 21HJMP OVERZERO: MOV AL,[STRING+1] ;显示输出为0CMP AL,30HJNE ZHENGSHUMOV DX,OFFSET MESS4MOV AH,09HINT 21HJMP OVEROVER: HLTCODE ENDS ;代码段结束(jiéshù)END START ;程序(chéngxù)结束五.实验(shíyàn)结果5.1 题目(tímù)一实验结果1. a=09, b=06, c=04, d=07时,计算结果为042. a=38, b=41, c=29, d=34时,计算结果为163. a=70, b=23, c=42, d=41时,计算结果为104. a=63, b=73, c=62, d=50时,计算结果为245.2 题目二实验结果键盘输入c9,输出“THIS DATA IS-“键盘输入17,输出“THIS DATA IS +”键盘输入00,输出”THIS DATA IS ZERO’六.必要的分析6.1 题目一分析1. 压缩BCD码需要用到压缩BCD码的调整指令2. 程序末尾显示要利用DOS功能调用3.显示单个字符,要先将其转化为ASCII 码,再利用DOS功能调用的02H功能。
西安交⼤传热学上机实验报告传热学上机实验报告⼆维导热物体温度场的数值模拟学院:化⼯学院姓名:沈佳磊学号:2110307016班级:装备11⼀、物理问题有⼀个⽤砖砌成的长⽅形截⾯的冷空⽓空道,其截⾯尺⼨如下图所⽰,假设在垂直于纸⾯⽅向上冷空⽓及砖墙的温度变化很⼩,可以近似地予以忽略。
在下列两种情况下试计算:(1)砖墙横截⾯上的温度分布;(2)垂直于纸⾯⽅向的每⽶长度上通过砖墙的导热量。
外矩形长为3.0m,宽为2.2m;内矩形长为2.0m,宽为1.2m。
第⼀种情况:内外壁分别均匀地维持在0℃及30℃;第⼆种情况:内外表⾯均为第三类边界条件,且已知:外壁:30℃,h1=10W/m2·℃,内壁:10℃,h2= 4 W/m2·℃砖墙的导热系数λ=0.53 W/m·℃由于对称性,仅研究1/4部分即可。
⼆、数学描写对于⼆维稳态导热问题,描写物体温度分布的微分⽅程为拉普拉斯⽅程22220t t x x ??+=??这是描写实验情景的控制⽅程。
三、⽅程离散⽤⼀系列与坐标轴平⾏的⽹格线把求解区域划分成许多⼦区域,以⽹格线的交点作为确定温度值的空间位置,即节点。
每⼀个节点都可以看成是以它为中⼼的⼀个⼩区域的代表。
由于对称性,仅研究1/4部分即可。
依照实验时得点划分⽹格。
建⽴节点物理量的代数⽅程对于内部节点,由?x=?y ,有,1,1,,1,11()4m n m n m n m n m n t t t t t +-+-=+++由于本实验为恒壁温,不涉及对流,故内⾓点,边界点代数⽅程与该式相同。
设⽴迭代初场,求解代数⽅程组图中,除边界上各节点温度为已知且不变外,其余各节点均需建⽴类似3中的离散⽅程,构成⼀个封闭的代数⽅程组。
以t ? =0°C 为场的初始温度,代⼊⽅程组迭代,直⾄相邻两次内外传热值之差⼩于0.01,认为已达到迭代收敛。
四、编程及结果program mainimplicit nonereal ,dimension(1:16,1:12)::treal ,dimension(1:16,1:12)::t1real q,q1,q2,q3,q4,q5,q6,q7,q8,q9,q10,q11,a integer m,n,z logical::converged=.false.z=1t=0a=0.53do n=1,12t(1,n)=30end dodo m=2,16t(m,12)=30end dodo n=1,7t(6,n)=0end dodo m=7,16t(m,7)=0end dodo while(.not.converged.and.z<10000)t1=tdo m=2,5do n=1,11if( n==1 )thent(m,n)=0.25*(t(m-1,n)+t(m+1,n)+2*t(m,n+1))elset(m,n)=0.25*(t(m-1,n)+t(m+1,n)+t(m,n-1)+t(m,n+1)) end if end doend dodo n=8,11do m=6,16if (m==16) thent(m,n)=0.25*(t(m,n-1)+t(m,n+1)+2*t(m-1,n)) elset(m,n)=0.25*(t(m-1,n)+t(m+1,n)+t(m,n-1)+t(m,n+1)) end if end doend doz=z+1do m=1,16do n=1,12if(abs(t(m,n)-t1(m,n))>0.000001) thenconverged=.false.exitelseconverged=.true.end ifend doend doend dowrite(*,'(16f5.1)',advance='no')((t(m,n),m=1,16),n=12,7,-1) write(*,*) write(*,'(6f5.1)',advance='no')((t(m,n),m=1,6),n=6,1,-1)do n=2,11q1=(t(1,n)-t(2,n))*a+q1end dodo m=2,15q2=(t(m,12)-t(m,11))*a+q2end doq3=(t(1,1)-t(2,1))*a*0.5q4=(t(16,12)-t(16,11))*a*0.5q10=q1+q2+q3+q4write(*,*)do n=2,6q5=(t(5,n)-t(6,n))*a+q5end dodo m=7,15q6=(t(m,8)-t(m,7))*a+q6end doq7=(t(5,1)-t(6,1))*a*0.5q8=(t(16,8)-t(16,7))*a*0.5q9=(t(5,7)-t(6,7))*a*2q11=q5+q6+q7+q8+q9q=(q10+q11)*0.5*4print*,"外表⾯导量=",q10,"内表⾯导热量",q11,"每⽶⾼砖墙导热量",q end结果截图:将以上结果⽤matlab画图⼯具绘制出如下图像:。
实验二分支程序的设计
一、实验目的
1.学习提示信息的显示及键盘输入字符的方法。
2.掌握分支程序的设计方法。
二、实验内容
在提示信息下,从键盘输入原码表示的二位十六进制有符号数。
当此数大于0时,屏幕显示此数为正数;当此数小于0时,屏幕显示此数为负数;当此数等于0时,屏幕显示此数为零。
三、程序代码
CRLF MACRO
MOV A H,02H
MOV D L,0DH
INT 21H
MOV A H,02H
MOV D L,0AH
INT 21H
ENDM
DATA SEGMENT
MESS1 DB 'INPUT DATA:',0DH,0AH,'$'
MESS2 DB 'THIS DATA IS +',0DH,0AH,'$'
MESS3 DB 'THIS DATA IS -',0DH,0AH,'$'
MESS4 DB 'THIS DATA IS ZERO',0DH,0AH,'$'
DATABUF DB 3
ACTLEN DB ?
STRING DB 3 DUP(?)
DATA ENDS
SSEG SEGMENT PARA STACK 'STACK'
DB 50 DUP(0)
SSEG ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:SSEG,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AX,SSEG
MOV SS,AX
MOV DX,OFFSET MESS1
MOV AH,09H
INT 21H
MOV AH,0AH
MOV DX,OFFSET DATABUF
INT 21H
CRLF
MOV AL,STRING
CMP AL,38H
JAE NEGATIVE
CMP AL,30H
JNZ POSITIVE
MOV AL,STRING[1]
CMP AL,30H
JNZ POSITIVE
MOV DX,OFFSET MESS4
MOV AH,09H
INT 21H
JMP RR
NEGATIVE:
MOV DX,OFFSET MESS3
MOV AH,09H
INT 21H
JMP RR
POSITIVE:
MOV DX,OFFSET MESS2
MOV AH,09H
INT 21H
JMP RR
RR:
MOV AX,4C00H
INT 21H
CODE ENDS
END START
四、调试过程
1.将代码编译链接成EXE文件,然后进入DEBUG进行调试。
2.利用U指令反汇编程序,结果如下图:
观察代码段地址范围,在信息提示输入的地方设置断点,即标号18的地方,运行程序,结果如下图:
输入45,经过反汇编,第一条分支结束后的代码段标号是2B,所以把第二个断点设在2B 处,运行程序,结果如下图,可以看到在此处分支选择判断正确,不进入NEGA TIVE分支。
继续在第二个分支结束的时候设置断点以查看分支选择是否正确,断点设在2F处,运行程序,结果如下图,可以看到程序进入第二个分支选择,因为45是正数,高位不为零。
程序运行结果显示“THIS DATA IS +”,结果正确。
下面将指令IP修改为0000,继续调试。
标号18的地方设断点,输入40,标号2B的地方设断点,运行程序,结果如下图:
由结果可以看出,分支选择判断正确,在32的地方设断点,运行程序查看,输出结果正确。
继续调试,输入90,在2B的地方设断点,直接进入第一个选择分支“NEGATIVE”,结果显示“THIS DATA IS -”,正确,如下图所示。
继续调试,输入00,依次在18、2B、32、36、3D五个地方设断点,查看程序运行情况,结果
如下图:
由结果可以看到,程序在每个分支选择处都判断正确,并最终输出正确显示:THIS DATA IS ZERO。
五、习题回答
1. 在 DEBUG 跟踪某条分支的时候,断点应该下在什么位置?如何查看标志位的变化情
况?
答:断点应该下在分支结束后第一条指令前以查看每次分支选择是否正确。
用DEBUG命令中的-R命令可以查看标志位的情况。
2. 从键盘输入的数字在键盘缓冲区是怎样分布的?用图简单地示意,用哪几条相关的
DEBUG 命令查看?
答:输入的数字以ASCII码形式存在键盘缓冲区,先输入的在低位地址。
在程序执行到输入字符以后设置断点,用DEBUG命令中的D 0000命令查看DS段可以看到数据情况。
例如:
3. 若输入的是非法字符而不是十六进制数,此程序会得到什么结果?如何改进?
答:若输入非法字符,显示结果不确定,可能为正,也可能为负。
例如:
改进方法:在本程序前加入一个分支,判断输入的数是否在十六进制数的范围,若在所限定范围之外输出提示“ERROR”,若在范围内再继续向下运行程序。