ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:417.29KB ,
资源ID:18519453      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18519453.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(合工大汇编语言程序设计实验报告Word格式.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

合工大汇编语言程序设计实验报告Word格式.docx

1、MOV 0208,AXMOV 020A,BX(2)寄存器间接寻址方式MOV SI,0200HMOV DI,0204HMOV BX,0208H MOV AX,SI MOV DX,SI+2 ADD AX,DI ADC DX,DI+2 MOV BX,AX MOV BX+2,DX四.实验结果(包括必要的截图)实验容一:输入数据:显示数据:实验容二:程序段编辑:反汇编:运行:结果在DS:0208 单元中 为00AB00ABH结果高字存放在dx中,低字存放在ax中(结果为00AB00ABh)五.实验体会通过本实验,实践debug程序中的命令,并在debug下调试运行汇编语言源程序。在实践过程中,解决如何把

2、数据录入存储单元、debug命令如何使用等问题后,知道存数据例如1234进存储单元时 要34 12存,还有掌握了寄存器的寻址方式。实验二 汇编语言程序设计(顺序、循环)1、掌握顺序和循环程序结构和设计方法;2、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。1、X、Y、Z、V均为字变量,在X、Y、Z、V字单元中存放是16位带符号数。试编写汇编语言程序完成以下功能:计算表达式值(V(X*Y+Z-720)/X;将上述表达式运算结果整数放在SUM1单元,余数放在SUM2单元。2、求一个班50名学生成绩的平均值(附加题:最大值和最小值,并将结果显示出来)3、从键盘读入一

3、个字符串,以Enter结束,字符串不超过50个字符,并打印该字符串(附加题:查找中间是否有asm子串。如果有,输出Yes;否则,输出No)。(注:附加题没有做)X、Y、Z、V均为字变量,在X、Y、Z、V字单元中存放是16位带符号数。Data segmentx dw ?y dw ?z dw ?v dw ?sum1 dw ?sum2 dw ?Data endsCode segmentassume cs:code,ds:datastart: mov ax,data mov ds,ax mov ax,x imul y mov cx,ax mov bx,dx mov ax,z cwd add cx,ax

4、 adc bx,dx sub cx,720 sbb bx,0 mov ax,v sub ax,cx sbb dx,bx idiv x mov sum1,ax mov sum2,dx mov ah,4ch int 21hCode ends end start求一个班50名学生成绩的平均值(为了方便,只设置了5个学生数据)data segment grade dw 90,80,80,70,60;平均数76data endscode segment assume cs: xor ax,ax mov cx,5 mov bx,offset grade again: add ax,bx add bx,2

5、loop again idiv cx mov ah,4chcode endsend start实验容三:从键盘读入一个字符串,以Enter结束,字符串不超过50个字符,并打印该字符串buffer db 50 db ? db 50 dup($)cr db 0ah,0dh,$codes segmentcodes,ds:input: mov ah,10 lea dx,buffer lea dx,cr mov ah,9output: lea dx,buffer+2codes ends设x=156,y=10,z=220,v=2000,则sum1=0006h,sum2=0004h在ax中看sum1,在dx

6、中看sum2预先设置的数据求得平均数为76,在ax中查看,即ax=004Ch通过本实验,将课本上学到的算术运算类指令、变量定义伪指令、存储单元、DOS 0AH号功能(字符串输入)和DOS 09H功能(字符串输出)等在实验中实现。在实现过程中,解决遇到的问题(符号扩展、定义的数组存储空间地址、字符串如何输入输出等)后,对上述知识有了更深的了解,并掌握实现它。实验三 汇编语言子程序设计(分支、子程序)1、掌握分支和子程序结构和设计方法;3、通过汇编语言了解高级语言的参数传递等知识。1、BL中的只有一位为1。编写程序测试,并输出提示信息“The X Bit is 1”,要求:地址表和转移表。2. 编

7、写一个子程序计算z=f(x,y)=x*y+x-y(x,y,z有符号数存数)。要求通过堆栈(寄存器、存)传送所有参数。3. 实践C Asm的转换过程。BL中的只有一位为1。编写程序测试,并输出提示信息“The X Bit is 1”(1)转移表;转移表,bl 左到右1-8位DATAS SEGMENT str1 db the 1 bit is 1,0dh,0ah, str2 db the 2 bit is 1 str3 db the 3 bit is 1 str4 db the 4 bit is 1 str5 db the 5 bit is 1 str6 db the 6 bit is 1 str

8、7 db the 7 bit is 1 str8 db the 8 bit is 1DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AX mov bl,00010000b mov cx,8 mov si,0 shl bl,1 jc next add si,3 next: add si,offset jmptable jmp sijmptable: jmp near ptr l1 jmp near ptr l2 jmp near ptr l3 jmp near ptr l4 jmp near p

9、tr l5 jmp near ptr l6 jmp near ptr l7 jmp near ptr l8l1: lea dx,str1 jmp outputl2: lea dx,str2l3: lea dx,str3l4: lea dx,str4l5: lea dx,str5l6: lea dx,str6l7: lea dx,str7l8: lea dx,str8 int 21h MOV AH,4CH INT 21HCODES ENDSEND START(2)地址表地址表,bl左到右依次是第1-8位 addrtable dw show1,show2,show3,show4,show5,sho

10、w6,show7,show8 mov bl,00001000b add si,2 jmp addrtablesishow1:show2:show3:show4:show5:show6:show7:show8:编写一个子程序计算z=f(x,y)=x*y+x-y(x,y,z有符号数存数)(1)堆栈传递参数z=x*y+x-y,x、y、z为有符号数,堆栈传递x dw 5y dw 2 sub sp,2 push y push x call cal pop z mov bx,zcal proc push bp mov bp,sp push ax push bx mov ax,bp+4 mov bx,bp+

11、6 imul bx add ax,bp+4 adc dx,0 sub ax,bp+6 sbb dx,0 mov bp+8,ax pop bx pop ax pop bp ret 4cal endp END START(2)寄存器传递参数z=x*y+x-y,x、y、z为有符号数,寄存器传递 x dw 5 y dw 2 z dw ? mov ax,x mov bx,y mov z,ax INT 21H cal proc mov cx,ax add ax,cx sub ax,bx sbb dx,0 ret cal endp(3)存传递参数z=x*y+x-y,x、y、z为有符号数,存传递 add ax

12、,x sub ax,y实践CASM的转换过程_TEXT SEGMENT_c$ = -32 ; size = 2_b$ = -20 ;_a$ = -8 ;_main PROC ; COMDAT 4 : void main() push ebp mov ebp, esp sub esp, 228 ; 000000e4H push ebx push esi push edi lea edi, DWORD PTR ebp-228 mov ecx, 57 ; 00000039H mov eax, -858993460 ; ccccccccH rep stosd 5 : 6 : short a,b,c;

13、7 : a=1; mov eax, 1 mov WORD PTR _a$ebp, ax 8 : b=a+1; movsx eax, WORD PTR _a$ebp add eax, 1 mov WORD PTR _b$ebp, ax 9 : c=a+b; movsx ecx, WORD PTR _b$ebp add eax, ecx mov WORD PTR _c$ebp, ax 10 : 11 : 12 : xor eax, eax pop edi pop esi pop ebx mov esp, ebp pop ebp ret 0_main ENDP_TEXT ENDS(1)转移表:设bl

14、=00010000b(2)地址表:设bl=00001000b设x=5,y=2,则z=13(000D),结果在ax(1)堆栈传递参数(结果在bx中查看)(2)寄存器传递参数(结果在ax中查看)(3)存传递参数(结果在ax中查看)五、实验体会 通过本实验,让我更加深入了解地址表和转移表、子程序和从C输出汇编文件等知识,通过实现地址表与转移表加深了对汇编寻址方式的了解;实现子程序,掌握主程序如何调用子程序,及子程序与主程序之间的参数传递方式;用VS实现C-ASM后,对C或C+有了新的认识。实验四 汇编语言高级编程专题1、汇编语言宏程序设计;2、 掌握中断服务子程序的编写。3、 汇编语言与高级语言的混

15、编。1、编写一个宏,求三个数的最小数,原型为:MIN3 x,y,z,min2、挂接1CH中断,正计时60秒后退出。要求屏幕显示0-59的秒数。3、VC+中编写联汇编,将字节数组的每个元素高低四位互换。 char dbyte = 0x34,0x45,0x56,0x67,0xaf;1.编写一个宏,求三个数的最小数,原型为:min3 macro x,y,z,min mov ax,xcmp ax,yjbe nextmov ax,ycmp ax,zjbe donedone:mov min,axendmx dw 2y dw 4z dw 3min dw ? min3 x,y,z,minINTNO EQU 1

16、CHDATA SEGMENT OLDISR DW ?,? TIMER DB 100 COUNTER DW 0 ISDONE DB 0DATA ENDS CODE SEGMENTCODE,DS:DATA MOV AX,DATA MOV DS,AX MOV AX,0 MOV ES,AX xor cx,cx ;PROTECT MOV AX, ES:INTNO*4 MOV OLDISR0,AX MOV AX,ES:INTNO*4+2 MOV OLDISR2, AXSET NEW ISR MOV WORD PTR ES:INTNO*4, OFFSET ISRINTNO*4+2,SEG ISRWAIT H

17、EREWAITHERE: CMP ISDONE,1 JNZ WAITHERE EXIT:RESTORE MOV AX,OLDISR0 MOV ES:INTNO*4,AX MOV AX,OLDISR2INTNO*4+2,AX MOV AX,4C00HISR PROC FAR PUSH DX PUSH AX STI ;便于中断嵌套 INC TIMER-判断是否输入a- mov ah,0bh or al,al jz next MOV AH,8;不显示输入的字符 CMP AL,a JNE next MOV AH,2;换行 MOV DL,10MOV COUNTER,0 ;从起一行计时时从0开始计时,注释

18、掉则从起一行继续旧时间计时 CMP TIMER, 1000/55 JB DONE MOV TIMER,0 MOV AH,2 MOV DL,13-print time- MOV AX,COUNTER DIV DL MOV DH,AH MOV DL,AL ADD DL,30H mov ah,2 mov dl,dh inc COUNTER cmp COUNTER,60 JNE DONE MOV ISDONE,1 DONE: PUSHF CALL DWORD PTR OLDISR CLI POP AX POP DX IRET ;中断返回ISR ENDPCODE ENDS#includeunsigned char change(unsigned char x) unsigned char a

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1