




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、. 工业大学计算机与信息学院实验报告课 程:汇编语言程序设计专业班级:*学 号:*姓 名: *目录实验一3实验二7实验三12实验四22实验一 Debug程序的使用实验目的1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。2、掌握8086/8088的寻址方式及多字节数据的处理方法。实验容1、利用DEBUG程序中的E命令,将两个多字节数003F1AE7H和006BE5C4H分别送入起始地址为DS:0200H和DS:0204H两个单元中。2、分别用直接寻址方式和存放器间接寻址方式编写程序段,实现将DS:0200H单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:
2、0208H单元中。要求:本次实验的容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。实验过程和程序实验容一: e ds:0200 E7 1A 3F 00 e ds:0204 C4 E5 6B 00 实验容二:直接寻址方式MOV A*,0200MOV B*,0202ADD A*,0204ADC B*,0206MOV 0208,A*MOV 020A,B*(2)存放器间接寻址方式MOV SI,0200HMOV DI,0204HMOV B*,0208H MOV A*,SI MOV D*,SI+2 ADD A*,DIADC D*,DI+2 MO
3、V B*,A* MOV B*+2,D*实验结果包括必要的截图实验容一:输入数据:显示数据:实验容二:1直接寻址方式程序段编辑:反汇编:运行:结果在DS:0208 单元中 为00AB00ABH2存放器间接寻址方式程序段编辑:反汇编:运行:结果高字存放在d*中,低字存放在a*中结果为00AB00ABh实验体会通过本实验,实践debug程序中的命令,并在debug下调试运行汇编语言源程序。在实践过程中,解决如何把数据录入存储单元、debug命令如何使用等问题后,知道存数据例如1234进存储单元时 要34 12存,还有掌握了存放器的寻址方式。实验二 汇编语言程序设计(顺序、循环)实验目的1、掌握顺序和
4、循环程序构造和设计方法;2、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。实验容1、*、Y、Z、V均为字变量,在*、Y、Z、V字单元中存放是16位带符号数。试编写汇编语言程序完成以下功能:计算表达式值V*Y+Z-720/*;将上述表达式运算结果整数放在SUM1单元,余数放在SUM2单元。2、求一个班50名学生成绩的平均值附加题:最大值和最小值,并将结果显示出来3、从键盘读入一个字符串,以Enter完毕,字符串不超过50个字符,并打印该字符串(附加题:查找中间是否有asm子串。如果有,输出Yes;否则,输出No)。实验过程和程序注:附加题没有做实验容一:*、Y、
5、Z、V均为字变量,在*、Y、Z、V字单元中存放是16位带符号数。试编写汇编语言程序完成以下功能:计算表达式值V*Y+Z-720/*;将上述表达式运算结果整数放在SUM1单元,余数放在SUM2单元。Data segment* dw y dw z dw v dw sum1 dw sum2 dw Data endsCode segmentassume cs:code,ds:datastart: mov a*,data mov ds,a*mov a*,* imul y mov c*,a* mov b*,d* mov a*,z cwd add c*,a* adc b*,d* sub c*,720 sbb
6、 b*,0 mov a*,v cwd sub a*,c* sbb d*,b* idiv * mov sum1,a* mov sum2,d* mov ah,4ch int 21hCode ends end start实验容二:求一个班50名学生成绩的平均值为了方便,只设置了5个学生数据data segment grade dw 90,80,80,70,60;平均数76data endscode segment assume cs:code,ds:datastart: mov a*,data mov ds,a* *or a*,a* mov c*,5 mov b*,offset grade agai
7、n: add a*,b* add b*,2 loop again mov c*,5 cwd idiv c* mov ah,4ch int 21hcode endsend start实验容三:从键盘读入一个字符串,以Enter完毕,字符串不超过50个字符,并打印该字符串data segmentbuffer db 50 db db 50 dup($)cr db 0ah,0dh,$data endscodes segment assume cs:codes,ds:datastart: mov a*,data mov ds,a*input: mov ah,10 lea d*,buffer int 21
8、h lea d*,cr mov ah,9 int 21houtput: lea d*,buffer+2 mov ah,9 int 21h mov ah,4ch int 21hcodes endsend start实验结果包括必要的截图实验容一:设*=156,y=10,z=220,v=2000,则sum1=0006h,sum2=0004h在a*中看sum1,在d*中看sum2 实验容二:预先设置的数据求得平均数为76,在a*中查看,即a*=004Ch实验容三:实验体会通过本实验,将课本上学到的算术运算类指令、变量定义伪指令、存储单元、DOS 0AH号功能字符串输入和DOS 09H功能字符串输出等
9、在实验中实现。在实现过程中,解决遇到的问题符号扩展、定义的数组存储空间地址、字符串如何输入输出等后,对上述知识有了更深的了解,并掌握实现它。实验三 汇编语言子程序设计(分支、子程序)实验目的1、掌握分支和子程序构造和设计方法;2、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。3、通过汇编语言了解高级语言的参数传递等知识。实验容1、BL中的只有一位为1。编写程序测试,并输出提示信息The * Bit is 1,要求:地址表和转移表。2. 编写一个子程序计算z=f(*,y)=*y+*-y*,y,z有符号数存数。要求通过堆栈(存放器、存)传送所有参数。3. 实践CA
10、sm的转换过程。实验过程和程序实验容一:BL中的只有一位为1。编写程序测试,并输出提示信息The * Bit is 11转移表;转移表,bl 左到右1-8位DATAS SEGMENT str1 db the 1 bit is 1,0dh,0ah,$ str2 db the 2 bit is 1,0dh,0ah,$ str3 db the 3 bit is 1,0dh,0ah,$ str4 db the 4 bit is 1,0dh,0ah,$ str5 db the 5 bit is 1,0dh,0ah,$ str6 db the 6 bit is 1,0dh,0ah,$ str7 db th
11、e 7 bit is 1,0dh,0ah,$ str8 db the 8 bit is 1,0dh,0ah,$DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV A*,DATAS MOV DS,A* mov bl,00010000b mov c*,8 mov si,0again: shl bl,1 jc ne*t add si,3 loop againne*t: add si,offset jmptable jmp sijmptable: jmp near ptr l1 jmp near ptr l2 jmp near ptr
12、l3 jmp near ptr l4 jmp near ptr l5 jmp near ptr l6 jmp near ptr l7 jmp near ptr l8l1: lea d*,str1 jmp outputl2: lea d*,str2 jmp outputl3: lea d*,str3 jmp outputl4: lea d*,str4 jmp outputl5: lea d*,str5 jmp outputl6: lea d*,str6 jmp outputl7: lea d*,str7 jmp outputl8: lea d*,str8output: mov ah,9 int
13、21h MOV AH,4CH INT 21HCODES ENDSEND START2地址表;地址表,bl左到右依次是第1-8位DATAS SEGMENT str1 db the 1 bit is 1,0dh,0ah,$ str2 db the 2 bit is 1,0dh,0ah,$ str3 db the 3 bit is 1,0dh,0ah,$ str4 db the 4 bit is 1,0dh,0ah,$ str5 db the 5 bit is 1,0dh,0ah,$ str6 db the 6 bit is 1,0dh,0ah,$ str7 db the 7 bit is 1,0d
14、h,0ah,$ str8 db the 8 bit is 1,0dh,0ah,$ addrtable dw show1,show2,show3,show4,show5,show6,show7,show8DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV A*,DATAS MOV DS,A* mov bl,00001000b mov c*,8 mov si,0again: shl bl,1 jc ne*t add si,2 loop againne*t: jmp addrtablesishow1: lea d*,str1 jmp
15、outputshow2: lea d*,str2 jmp outputshow3: lea d*,str3 jmp outputshow4: lea d*,str4 jmp outputshow5: lea d*,str5 jmp outputshow6: lea d*,str6 jmp outputshow7: lea d*,str7 jmp outputshow8: lea d*,str8 jmp outputoutput: mov ah,9 int 21h MOV AH,4CH INT 21HCODES ENDSEND START实验容二:编写一个子程序计算z=f(*,y)=*y+*-y
16、*,y,z有符号数存数1堆栈传递参数;z=*y+*-y,*、y、z为有符号数,堆栈传递DATAS SEGMENT* dw 5y dw 2z dw DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV A*,DATAS MOV DS,A* sub sp,2 push y push * call cal pop z mov b*,z MOV AH,4CH INT 21Hcal proc push bp mov bp,sp push a* push b* mov a*,bp+4 mov b*,bp+6 imul b* add a*,bp
17、+4 adc d*,0 sub a*,bp+6 sbb d*,0 mov bp+8,a* pop b* pop a* pop bp ret 4cal endpCODES ENDS END START2存放器传递参数;z=*y+*-y,*、y、z为有符号数,存放器传递DATAS SEGMENT * dw 5 y dw 2 z dw DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV A*,DATAS MOV DS,A* mov a*,* mov b*,y call cal mov z,a* MOV AH,4CH INT 21H c
18、al proc mov c*,a* imul b* add a*,c* adc d*,0 sub a*,b* sbb d*,0 ret cal endpCODES ENDS END START3存传递参数;z=*y+*-y,*、y、z为有符号数,存传递DATAS SEGMENT* dw 5y dw 2z dw DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV A*,DATAS MOV DS,A* call cal MOV AH,4CH INT 21H cal proc mov a*,* imul y add a*,* adc
19、d*,0 sub a*,y sbb d*,0 mov z,a* ret cal endpCODES ENDS END START实验容三:实践CASM的转换过程_TE*TSEGMENT_c$ = -32; size = 2_b$ = -20; size = 2_a$ = -8; size = 2_mainPROC; DAT; 4 : void main()pushebpmovebp, espsubesp, 228; 000000e4Hpusheb*pushesipushedileaedi, DWORD PTR ebp-228movec*, 57; 00000039Hmovea*, -85899
20、3460; ccccccccHrep stosd; 5 : ; 6 : short a,b,c; 7 : a=1;movea*, 1movWORD PTR _a$ebp, a*; 8 : b=a+1;movs*ea*, WORD PTR _a$ebpaddea*, 1movWORD PTR _b$ebp, a*; 9 : c=a+b;movs*ea*, WORD PTR _a$ebpmovs*ec*, WORD PTR _b$ebpaddea*, ec*movWORD PTR _c$ebp, a*; 10 : ; 11 : ; 12 : *orea*, ea*popedipopesipopeb
21、*movesp, ebppopebpret0_mainENDP_TE*TENDS实验结果包括必要的截图实验容一:转移表:设bl=00010000b2地址表:设bl=00001000b实验容二:设*=5,y=2,则z=13000D,结果在a*堆栈传递参数结果在b*中查看2存放器传递参数结果在a*中查看3存传递参数结果在a*中查看五、实验体会通过本实验,让我更加深入了解地址表和转移表、子程序和从C输出汇编文件等知识,通过实现地址表与转移表加深了对汇编寻址方式的了解;实现子程序,掌握主程序如何调用子程序,及子程序与主程序之间的参数传递方式;用VS实现C-ASM后,对C或C+有了新的认识。实验四 汇编
22、语言高级编程专题实验目的1、汇编语言宏程序设计;2、 掌握中断效劳子程序的编写。3、 汇编语言与高级语言的混编。实验容1、编写一个宏,求三个数的最小数,原型为:MIN3 *,y,z,min2、挂接1CH中断,正计时60秒后退出。要求屏幕显示0-59的秒数。3、VC+中编写联汇编,将字节数组的每个元素上下四位互换。 char dbyte = 0*34,0*45,0*56,0*67,0*af;实验过程和程序编写一个宏,求三个数的最小数,原型为:MIN3 *,y,z,minmin3 macro *,y,z,min mov a*,*cmp a*,ye ne*tmov a*,ycmp a*,ze don
23、ene*t:cmp a*,ze donedone:mov min,a*endmDATAS SEGMENT* dw 2y dw 4z dw 3min dw DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV A*,DATAS MOV DS,A* min3 *,y,z,min MOV AH,4CH INT 21HCODES ENDS END START2、挂接1CH中断,正计时60秒后退出。要求屏幕显示0-59的秒数。INTNO EQU 1CHDATA SEGMENT OLDISR DW , TIMER DB 100 COUNTER
24、 DW 0 ISDONE DB 0DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV A*,DATA MOV DS,A* MOV A*,0 MOV ES,A* *or c*,c* ;PROTECT MOV A*, ES:INTNO*4 MOV OLDISR0,A* MOV A*,ES:INTNO*4+2 MOV OLDISR2, A* ;SET NEW ISR MOV WORD PTR ES:INTNO*4, OFFSET ISR MOV WORD PTR ES:INTNO*4+2,SEG ISR ;WAIT HEREWAITHERE
25、: CMP ISDONE,1 JNZ WAITHERE E*IT: ;RESTORE MOV A*,OLDISR0 MOV ES:INTNO*4,A* MOV A*,OLDISR2 MOV ES:INTNO*4+2,A* MOV A*,4C00H INT 21HISR PROC FAR PUSH D* PUSH A* MOV A*,DATA MOV DS,A* STI ;便于中断嵌套 INC TIMER;-判断是否输入a- mov ah,0bh int 21h or al,al jz ne*t MOV AH,8;不显示输入的字符 INT 21H CMP AL,a JNE ne*t MOV AH,2;换行 MOV DL,10 INT 21H ;MOV COUNTER,0 ;从起一行计时时从0开场计时
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 技术咨询服务领域合同合同
- 劳动合同争议答辩状模板
- 煤炭运输合同范本
- 展位分租合同
- 教育学生珍爱生命
- 数据信息安全保密合同
- 胸外科快速康复护理要点
- 股权转让合同法律意见书示例
- 人工智能技术应用与责任划分协议
- 杭州购房合同标准格式
- 《电力建设工程施工安全管理导则》(NB∕T 10096-2018)
- 医疗器械考试题及答案
- 画饼充饥儿童故事绘本 课件
- 《学风建设主题班会》课件
- 心理护理的沟通与技巧
- 开关、插座及其它电气设备技术规格书
- 早期阻断性矫治-乳前牙反颌的矫治(口腔正畸科)
- 手术室护士子宫切除手术护理配合常规
- DB61T 5097-2024 强夯法处理湿陷性黄土地基技术规程
- 药物临床试验统计分析计划书
- 12zg003多层和高层混凝土房屋结构抗震构造图集
评论
0/150
提交评论