欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    514652093计算机组成原理与汇编语言程序设计实验报告.doc

    • 资源ID:2385650       资源大小:235KB        全文页数:53页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    514652093计算机组成原理与汇编语言程序设计实验报告.doc

    计算机组成原理与汇编语言程序设计实验报告实验一实验内容:查看CPU和内存,用机器指令和汇编指令编程。实验任务:(1)了解并熟悉WINDOW中DEBUG工具.DEBUG的命令及功能如下:*r【register】命令用于查看、改变寄存器的内容;rr ax*d【不懂为什么叫D】查看内存的内容;d 段地址:偏移地址,段地址可以用CS,DS,SS,ES代替*e 【edit】改写内存的内容e 段地址:偏移地址 依次填入要赋值的数字,每个字节检用空格间隔开*a 【asm,嘿嘿,我自己猜的,】以汇编的形式向内存写入东西a 段地址:偏移地址如果没有指定,一开始是CS:IP,其他的时上一次修改的末尾。*u 【英文不好,不懂,估计是un-ooxx反汇编吧】将内存中的机器码以汇编指令显示出来格式和a命令一样*t 【真不懂】执行CS:IP指向的命令(2)用A、E命令向2000:0内存中写入以下命令,并执行mov ax,1add ax,axjmp 2000:0003计算机组成原理与汇编语言程序设计实验报告实验二实验内容:用机器指令和汇编指令编程实验任务:(1)预备知识:了解DEBUG是如何执行D命令的在E,A,U命令中使用段寄存器 mov ss,ax mov sp,100(2)使用DEBUG执行一段程序-a13B4:0100 mov ax,ffff13B4:0103 mov ds,ax13B4:0105 mov ax,220013B4:0108 mov ss,ax13B4:010A mov sp,010013B4:010D mov ax,013B4:0110 add ax,213B4:0114 mov bx,413B4:0118 add bx,613B4:011C push ax13B4:011D push bx13B4:011E pop ax13B4:011F pop bx13B4:0120 push 413B4:0124 push 613B4:0128计算机组成原理与汇编语言程序设计实验报告实验三实验内容:编程、编译、链接、跟踪实验任务:(1) 编译一个简单的汇编程序assume cs:codecode segmentmov ax,1000hmov ss,axmov sp,0100hmov ax,1001hmov ds,ax;swap(ds:0,ds2)push ds:0push ds:2pop ds:0pop ds:2mov ax,4c00hint 21hcode endsend编译:masm.exe code.txtlink.exe code.objpause运行:debug.exe code.exepause计算机组成原理与汇编语言程序设计实验报告实验四实验内容:【BX】和LOOP的使用实验任务:(1) 编程,向内存0:200 0:23F一次存入数据0 63assume cs:codecode segmentmov ax,0hmov ds,axmov bx,200h;start from 0:200mov cx,64h;loop for 64h timesmov ax,0h;0h to 63hlp:mov bx,axinc ax;add the numberinc bx,;move the addressloop lpmov ax,4c00hint 21hcode endsend(2) 编程,向内存0:200 0:23F一次存入数据0 63,程序中只能9条指令(3) 下面的程序师将“MOV AX,40CCH之前的指令复制到内存中去,assume cs:codecode segmentmov ax,csmov ds,axmov ax,0020hmov es,axmov bx,0mov cx,16hs:mov al,bxmov es:bx,alinc bxloop smov ax,4c00hint 21hcode endsend-d cs:0 16142D:0000 8C C8 8E D8 B8 20 00 8E-C0 BB 00 00 B9 16 00 8A . .142D:0010 07 26 88 07 43 E2 F8 .&.C.-d es:0 160020:0000 8C C8 8E D8 B8 20 00 8E-C0 BB 00 00 B9 16 00 8A . .0020:0010 07 26 88 07 43 E2 00 .&.C.计算机组成原理与汇编语言程序设计实验报告实验五实验内容:编写,调试具有多个段的程序实验任务:(4) 编译,调试下面程序assume cs:code,ds:data,ss:stackdata segmentdw 0123h,0456h,0789h,0acbh,0defh,0fedh,0cbah,0987hdata endsstack segmentdw 0,0,0,0,0,0,0,0stack endscode segmentstart:mov ax,stackmov ss,axmov sp,16mov ax,datamov ds,axpush ds:0push ds:2pop ds:2pop ds:0mov ax,4c00hint 21hcode endsend加载后:-r csCS 142F:-u142F:0000 B82E14 MOV AX,142E142F:0003 8ED0 MOV SS,AX142F:0005 BC1000 MOV SP,0010142F:0008 B82D14 MOV AX,142D142F:000B 8ED8 MOV DS,AX142F:000D FF360000 PUSH 0000142F:0011 FF360200 PUSH 0002142F:0015 8F060200 POP 0002142F:0019 8F060000 POP 0000142F:001D B8004C MOV AX,4C00程序返回前:-d ds:0 16142D:0000 23 01 56 04 89 07 CB 0A-EF 0D ED 0F BA 0C 87 09 #.V.142D:0010 00 00 2D 14 2D 14 2D .-.-.-r csCS 142F:-r dsDS 142D:-r ssSS 142E(5) 编译,调试下面程序assume cs:code,ds:data,ss:stackdata segmentdw 0123h,0456hdata endsstack segmentdw 0,0stack endscode segmentstart:mov ax,stackmov ss,axmov sp,16mov ax,datamov ds,axpush ds:0push ds:2pop ds:2pop ds:0mov ax,4c00hint 21hcode endsend start加载后:-d ds:0 4142D:0000 23 01 56 04 00 #.V.-r csCS 142F:-r dsDS 142D:-r ssSS 142E:程序返回前:-r dsDS 142D:-r ssSS 142E:-r csCS 142F:(6) 编译,调试下面程序assume cs:code,ds:data,ss:stackcode segmentstart:mov ax,stackmov ss,axmov sp,16mov ax,datamov ds,axpush ds:0push ds:2pop ds:2pop ds:0mov ax,4c00hint 21hcode endsdata segmentdw 0123h,0456hdata endsstack segmentdw 0,0stack endsend start-r csCS 142D:-r dsDS 1430:-r ssSS 1431:-d ds:0 41430:0000 23 01 56 04 00 #.V.(7) 编程,实现将A,B段数据相加,结果保留到C段中assume cs:codea segmentdw 7fffh dup(0fffh)a endsb segmentdw 7fffh dup(0eeeh)b endsc segmentdw 7fffh dup(0h)c endscode segmentstart:mov ax,amov ss,ax;get the a segmentmov ax,bmov es,ax;get the b segmentmov ax,cmov ds,ax;get the c segmentmov cx,0fff0h;add the a and b ,length is the whole segmentmov bx,0h;from 0mov ax,0h;init the axmov dx,0h;init the dxlp:mov dl,ss:bx;get the byte from a segmentadd ax,dxmov dl,es:bx;get the byte from b segmentadd ax,dxmov ds:bx,al;save the answermov al,ah;shift the axmov ah,0;init the ahinc bx;add bxloop lpadd ax,4c00hint 21hcode endsend start计算机组成原理与汇编语言程序设计实验报告实验六实验内容:更灵活定位内存地址实验任务:(8) 实验课程的程序大写转小写assume cs:code,ds:datedata segmentdb 'unIX'db 'foRK'data endscode segmentstart:mov ax,datamov ds,axmov bx,0hmov cx,8hlp:mov al,bxor al,20hmov bx,alinc bxloop lpmov ax,4c00hint 21hcode endsend start使用BX+IDATA,SI、DI等定位assume cs:code,ds:datadata segmentdb 'welcome to masm!'db '.'data endscode segmentstart:mov ax,datamov ds,axmov di,10hmov si,0hmov cx,8hlp:mov ax,simov di,axadd si,2add di,2loop lpmov ax,4c00hint 21hcode endsend startassume cs:code,ds:datadata segmentdb 'welcome to masm!'db '.'data endscode segmentstart:mov ax,datamov ds,axmov si,0hmov cx,8hlp:mov ax,simov 10hsi,axadd si,2loop lpmov ax,4c00hint 21hcode endsend start编程实现将每个单词前4个字母改为大写字母assume cs:code,ds:data,ss:stackstack segmentdw 20h dup(0h)stack endsdata segmentdb '1. display 'db '2. Brows 'db '3. replace 'db '4. modify 'data endscode segmentstart:mov ax,datamov ds,axmov ax,stackmov ss,axmov sp,10hmov bx,0hmov cx,4lp1:push cxmov cx,4mov si,3lp2:mov al,bx+siand al,11011111bmov bx+si,alinc siloop lp2pop cxadd bx,10hloop lp1mov ax,4c00hint 21hcode endsend start计算机组成原理与汇编语言程序设计实验报告实验七实验内容:寻址方式在结构化的数据访问中的应用实验任务:assume cs:code,ds:datadata segmentdb '1970','1971','1972','1973','1974'db '1975','1976','1977','1978','1979'db '1980','1981','1982','1983','1984'db '1985','1986','1988','1988','1989'db '1990'21个年份dd 23,2134,343342,4334235,3dd 2332,23414,33432,43235,32dd 233,43214,3432,43235,33dd 23433,2144,3432,43235,323244,333342;21年份的公司收入 DWORD类型dw 2,3,6,778,711dw 127,137,176,178,197dw 273,372,276,728,171dw 732,337,367,378,3117,1000;21年份的公司员工数7data endstable segmentdb 21 dup('Year summ ne ?!')table endscode segmentstart:mov ax,datamov ds,axmov ax,tablemov es,axmov cx,21;21 timesmov bx,0hmov bp,0hmov di,84;4*21 byte ;summov si,168;84+84;numberlp:mov ax,bxmov es:bp,axmov ax,bx+2mov es:bp+2,ax;copy the yearmov ax,simov es:bp+10,ax;copy the number of workersmov ax,bx+dimov es:bp+5,axmov dx,bx+di+2mov es:bp+7,dx;copy the sumdiv word ptr simov es:bp+13,ax;save the answaeradd bx,4hadd bp,10hadd si,2hloop lpmov ax,4c00hint 21hcode endsend start计算机组成原理与汇编语言程序设计实验报告实验八实验内容:分析一个奇怪的程序实验任务:(9) 编程,向内存0:200 0:23F一次存入数据0 63assume cs:codecode segmentmov ax,4c00hint 21hstart:mov ax,0s:nopnopmov di,offset smov si,offset s2mov ax,cs:simov cs:di,axs0:jmp short ss1:mov ax,0int 21hmov ax,0s2:jmp short s1;编译的时候只是指明IP偏移的相对地址nopcode endsend start计算机组成原理与汇编语言程序设计实验报告实验九实验内容:根据材料编程实验任务:(10) 编程,向内存0:200 0:23F一次存入数据0 63assume cs:codedata segmentdb 'nice to meet you!'17个字符db 00000111B;黑底白字db 01110000B;白底黑字db 00010100B;蓝底红字db 10001010B;ooxx.db 11011001B;ooxx.db 00010110B;ooxx.db 00000000B;一片漆黑db 01110111B;白白的;8 种样式data endscode segmentstart:mov ax,0b800hmov ds,ax;set the bufmov ax,datamov es,ax;set the datamov bx,0h;bx=行号mov bp,17;the style setlp:mov si,0h; with ds add step=2mov di,0h; with es add step=1mov cx,17;17个字节lp2:mov al,es:dimov bx+si,al;copy the lettermov al,es:bpmov bx+si+1,al;copy the styleadd si,2hinc diloop lp2inc bp;next styleadd bx,160; next linemov cx,bpsub cx,25;25-17=8 linesloop lpmov ax,4c00hint 21hcode endsend start计算机组成原理与汇编语言程序设计实验报告实验十实验内容:编写子程序实验任务:(11) 编程实现显示字符串assume cs:code,ds:data,ss:stackdata segmentdb 'nice to meet you!'db 0db '哇哈哈,wuwuwuuw! heiheihei !'db 0data endsstack segmentdb 100h dup(0);the stackstack endscode segmentstart:mov ax,stackmov ss,axmov sp,100h;stackmov ax,datamov ds,ax;datamov dl,2mov dh,1mov cl,00101101B;set the style of the lettermov si,0call show_strmov dl,4mov dh,0add si,18call show_strmov ax,4c00hint 21h;end of the exec;/子过程定义 show_strshow_str:;显示字符串;字符串以0结束;dh=行 dl=列 cl=样式 ds:si=字符串首地址;无返回值push axpush bxpush cxpush dxpush espush si;寄存器入栈mov ax,0b800hmov es,ax;get the bufmov al,160mul dh;get the first pos of the line dhmov bx,0;mov bl,dladd bl,bladd bx,ax;es:bx the first show placemov al,clmov cx,0;init cxshow_str_lp:mov cl,ds:simov es:bx,clmov es:bx+1,alinc siadd bx,2inc cxloop show_str_lp;loop until ds:si=0pop sipop espop dxpop cxpop bxpop ax;寄存器出栈ret;show_str 返回;/子过程定义 show_strcode endsend start(12) 解决除法溢出问题assume cs:code,ss:stackstack segmentdb 100h dup(0);the stackstack endscode segmentstart:mov ax,stackmov ss,axmov sp,100h;stackmov ax,0b0f0hmov dx,0201hmov cx,1hcall divdwmov ax,4c00hint 21h;end of exec;/函数程定义 divdwdivdw:;divdw dword / word = dword;参数ax 低16位、dx高16位 cx除数;返回值 ax,低16位、dx高16位 cx余数jcxz divdw_ret;处理除数为零的情况push bx;寄存器入栈push axmov ax,dxmov dx,0div cxmov bx,axpop axdiv cxmov cx,dxmov dx,bxpop bx;寄存器出栈divdw_ret:ret;函数返回;/子过程定义 divdwcode endsend start(13) 数值显示assume cs:code,ds:data,ss:stackdata segmentdb 100h dup(0)data endsstack segmentdb 100h dup(0);the stackstack endscode segmentstart:mov ax,stackmov ss,axmov sp,100h;stackmov ax,datamov ds,ax;datamov si,0mov ax,0hcall btodmov dl,2mov dh,1mov cl,00101101B;set the style of the lettercall show_strmov ax,4c00hint 21h;end of the exec;/子过程定义 show_strshow_str:;显示字符串;字符串以0结束;dh=行 dl=列 cl=样式 ds:si=字符串首地址;无返回值push axpush bxpush cxpush dxpush espush si;寄存器入栈mov ax,0b800hmov es,ax;get the bufmov al,160mul dh;get the first pos of the line dhmov bx,0;mov bl,dladd bx,ax;es:bx the first show placemov al,clmov cx,0;init cxshow_str_lp:mov cl,ds:simov es:bx,clmov es:bx+1,alinc siadd bx,2inc cxloop show_str_lp;loop until ds:si=0pop sipop espop dxpop cxpop bxpop ax;寄存器出栈ret;show_str 返回;/子过程定义 show_str;/子过程定义 btodbtod:;将一个二进制转化为十进制;参数 ax=word型数据;ds:si为目标字符串首地址;无返回值push axpush bxpush cxpush dxpush si;寄存器入栈mov bx,0btod_lp1:mov dx,0mov cx,10div cxadd dx,30hpush dxinc bxmov cx,axinc cxloop btod_lp1;get the string and push into stackmov cx,bxbtod_lp2:pop siinc siloop btod_lp2;write the answer into the memorymov ax,0mov si,ax;set the end of the stringpop sipop dxpop cxpop bxpop ax;寄存器出栈ret;btod过程返回;/子过程定义 btodcode endsend start课程设计1assume cs:code,ds:data,ss:stackdata segmentdb '1970','1971','1972','1973','1974'db '1975','1976','1977','1978','1979'db '1980','1981','1982','1983','1984'db '1985','1986','1988','1988','1989'db '1990'21个年份dd 23,2134,343342,4334235,3dd 2332,23414,33432,43235,32dd 233,43214,3432,43235,33dd 23433,2144,3432,43235,1321324411,300000000;21年份的公司收入 DWORD类型dw 2,3,6,778,711dw 127,137,176,178,197dw 273,372,276,728,171dw 732,337,367,378,1,10033;21年份的公司员工数7data endstable segmentdb 21 dup('Year summ ne ?!')table endsbuffer segmentdb 100h dup(0)buffer endsstack segmentdb 1000h dup(0)stack endscode segmentstart:mov ax,datamov ds,axmov ax,tablemov es,ax;试验七代码 =mov cx,21;21 timesmov bx,0hmov bp,0hmov di,84;4*21 byte ;summov si,168;84+84;numberlp:mov ax,bxmov es:bp,axmov ax,bx+2mov es:bp+2,ax;copy the yearmov ax,simov es:bp+10,ax;copy the number of workersmov ax,bx+dimov es:bp+5,axmov dx,bx+di+2mov es:bp+7,dx;copy the sum;对以前代码的修改div word ptr sipush cxmov cx,sicall divdwpop cx;对以前代码的修改mov es:bp+13,axmov es:bp+15,dx;save the answaeradd bx,4hadd bp,12hadd si,2hloop lp;试验七代码 =mov ax,buffermov ds,ax;set the buffermov bx,0mov di,0;the di linemov si,0mov cx,21lp2:push cx;/=show the yearmov ax,es:bxmov ds:si,axmov ax,es:bx+2mov ds:si+2,axmov al,' 'output the spacemov ah,0h;set the end of stringmov ds:si+4,axmov dl,0mov ax,dimov dh,al;set the linemov cl,00011101B;set the style of the lettercall show_str;show the year;/=show the year;/=show the summov ax,es:bx+5mov dx,es:bx+7call dw_btodmov ax,10;字符串长度10call format_str;格式化字符串mov dl,5mov ax,dimov dh,al;set the linemov cl,00101101B;set the style of the lettercall show_str;show the year;/=show the sum;/=show the numbermov ax,es:bx+10call btodmov ax,6;字符串长度6call format_s

    注意事项

    本文(514652093计算机组成原理与汇编语言程序设计实验报告.doc)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开