汇编语言课后题答案.doc

上传人:文库蛋蛋多 文档编号:2392965 上传时间:2023-02-17 格式:DOC 页数:12 大小:72.50KB
返回 下载 相关 举报
汇编语言课后题答案.doc_第1页
第1页 / 共12页
汇编语言课后题答案.doc_第2页
第2页 / 共12页
汇编语言课后题答案.doc_第3页
第3页 / 共12页
汇编语言课后题答案.doc_第4页
第4页 / 共12页
汇编语言课后题答案.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《汇编语言课后题答案.doc》由会员分享,可在线阅读,更多相关《汇编语言课后题答案.doc(12页珍藏版)》请在三一办公上搜索。

1、检测点1.1(1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为13位。(2)1KB的存储器有1024个存储单元,存储单元的编号从0到1023。(3)1KB的存储器可以存储8192(213)个bit,1024个Byte。(4)1GB是1073741824 (230)个Byte、1MB是1048576(220)个Byte、1KB是1024(210)个Byte。(5)8080、8088、80296、80386的地址总线宽度分别为16根、20根、24根、32根,则它们的寻址能力分别为:64(KB)、1(MB)、16(MB)、4(GB)。(6)8080、8088、8086、80286、8038

2、6的数据总线宽度分别为8根、8根、16根、16根、32根。则它们一次可以传送的数据为:1(B)、1(B)、2(B)、2(B)、4(B)。(7)从内存中读取1024字节的数据,8086至少要读512次,80386至少要读256次。(8)在存储器中,数据和程序以二进制形式存放。检测点 2.1(1) 写出每条汇编指令执行后相关寄存器中的值。mov ax,62627AX=F4A3Hmov ah,31HAX=31A3Hmov al,23HAX=3123Hadd ax,axAX=6246Hmov bx,826CHBX=826CHmov cx,axCX=6246Hmov ax,bxAX=826CHadd a

3、x,bxAX=04D8Hmov al,bhAX=0482Hmov ah,blAX=6C82Hadd ah,ahAX=D882Hadd al,6AX=D888Hadd al,alAX=D810Hmov ax,cxAX=6246H检测点 2.2(1) 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为0010H到1000FH。(2) 有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元。则SA应满足的条件是:最小为1001H,最大为2000H。检测点2.31、下面的3条指令执行后,cpu几次修改IP?都是在什么时候?最后IP中的值是多少?mov ax,

4、bxsub ax,axjmp ax答:一共修改四次第一次:读取mov ax,bx之后第二次:读取sub ax,ax之后第三次:读取jmp ax之后第四次:执行jmp ax修改IP最后IP的值为0000H,因为最后ax中的值为0000H,所以IP中的值也为0000H检测点3.1(1)在DEBUG中,用 D 0:0 lf 查看内存,结果如下:0000:0000 70 80 F0 30 EF 60 30 E2-00 80 80 12 66 20 22 600000:0010 62 26 E6 D6 CC 2E 3C 3B-AB BA 00 00 26 06 66 88下面的程序执行前,AX=0,BX

5、=0,写出每条汇编指令执行完后相关寄存器中的值。mov ax,1mov ds,axmov ax,0000ax=2662Hmov bx,0001bx=E626Hmov ax,bxax=E626Hmov ax,0000ax=2662Hmov bx,0002bx=D6E6Hadd ax,bxax=FD48Hadd ax,0004ax=2C14H mov ax,0ax=0mov al,0002ax=00e6Hmov bx,0bx=0mov bl,000cbx=0026Hadd al,blax=000CH(2)指令序列如下:mov ax,6622hjmp 0ff0:0100mov ax,2000hmov

6、 ds,axmov ax,0008mov ax,0002写出CPU执行每条指令后,CS、IP和相关寄存器中的数值。指令序列寄存器CSIPDSAXBX初始值2000H00001000H00mov ax,6622h2000H00031000H6622H0000jmp 0ff0:01001000H00001000H6622H0000mov ax,2000h1000H00031000H2000H0000mov ds,ax1000H00052000H2000H0000mov ax,00081000H00082000HC389H0000mov ax,00021000H000B2000HEA66H0000检

7、测点3.2(1)补全下面的程序,使其可以将10000H-1000FH中的8个字,逆序拷贝到20000H-2000FH中。mov ax,1000Hmov ds,axmov ax,2000H mov ss,axmov sp,10h push 0push 2push 4push 6push 8push Apush Cpush E(2)补全下面的程序,使其可以将10000H-1000FH中的8个字,逆序拷贝到20000H-2000FH中。mov ax,2000Hmov ds,axmov ax,1000H mov ss,ax mov sp,0pop epop cpop apop 8pop 6pop 4p

8、op 2pop 0实验4 BX和loop的使用 (1) 编程,向内存0:2000:23F依次传送数据063(3FH)。程序如下:assume cs:codesgcodesg segmentmov ax,0020hmov ds,axmov bx,0mov dl,0mov cx,40hs:mov bx,dlinc dlinc bxloop smov ax,4c00hint 21hcodesg endsend(2) 编程,向内存0:2000:23F依次传送数据063(3FH),程序中只能使用9条指令,9条指令中包括“mov ax,4c00h”和“int 21h”。程序如下:assume cs:cod

9、esgcodesg segmentmov ax,0020hmov ds,axmov bl,0mov cx,40hs:mov bx,blinc blloop smov ax,4c00hint 21hcodesg endsend(3) 下面的程序的功能是将“mov ax,4c00h”之前的指令复制到内存0:200处,补全程序。上机调试,跟踪运行结果。assume cs:codecode segmentmov ax,code或cs ;code为所填写的数据mov ds,axmov ax,0020hmov es,axmov bx,0mov cx,18h 或17h或sub cx,5 s: mov al,

10、bxmov es:bx,alinc bxloop smov ax,4c00hint 21hcode endsend检测点6.1(1) 下面的程序实现依次用内存0:00:15单元中的内容改写程序中的数据,完成程序:assume cs:codesgcodesg segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hstart:mov ax,0mov ds,axmov bx,0mov cx,8s:mov ax,bxmov cs:bx,ax ;此条指令为所填指令add bx,2loop smov ax,4c00hint 21hcodesg e

11、ndsend start(2) 下面的程序实现依次用内存0:00:15单元中的内容改写程序中的数据,数据的传送用栈来进行。栈空间设置在程序内。完成程序:assume cs:codesgcodesg segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h dw 0,0,0,0,0start: mov ax,cs ;cs为所填第一空 mov ss,axmov sp,1ah或36 ;此条指令为所填第二空mov ax,0mov ds,axmov bx,0mov cx,8s:push bxpop cs:bx ;此条指令为所填第三空add bx

12、,2loop smov ax,4c00hint 21hcodesg endsend start 实验5 编写、调试具有多个段的程序(5)编写code段中的内容,将a段和b段中的数据依次相加,将结果存到c段中。assume cs:codea segment db 1,2,3,4,5,6,7,8a endsb segment db 1,2,3,4,5,6,7,8b endsc segment db 0,0,0,0,0,0,0,0c endscode segment start:mov ax,a mov es,ax mov ax,c mov ds,ax mov bx,0 mov cx,8 s1:mo

13、v ax,es:bx add bx,ax add bx,2 loop s1 mov ax,b mov es,ax mov ds,ax mov bx,0 mov cx,8 s2:mov ax,es:bx add bx,ax add bx,2 loop s2 mov ax,4c00h int 21hcode ends end start(6) 程序如下,编写code段中的代码,用push指令将a段中的前8个字型数据,逆序存储到b段中。assume cs:codea segment dw 1,2,3,4,5,6,7,8a endsb segment dw 0,0,0,0,0,0,0,0b endsc

14、ode segmentstart: mov ax,b mov ss,ax mov sp,10h mov ax,a mov ds,ax mov bx,0 mov cx,8s: push bx add bx,2 loop s mov ax,4c00h int 21hcode endsend start检测点9.1-9.2见课件检测点9.3补全程序,利用loop指令,实现在内存2000H段中查找第一个值为0的byte,找到后,将它的偏移地址存储在dx中。assume cs:codecode segmentstart: mov ax,2000h mov ds,ax mov bx,0 s: mov cl

15、,bx mov ch,0 inc cx ;此条指令为题目要求补全的指令 inc bx loop s ok: dec bx mov dx,bx mov ax,4c00h int 21hcode endsend start检测点10.1-10.5见课件检测点11.1写出下面每条指令后,ZF、PF、SF等标志位的值。 ZF PF SFsub al,al 1 1 0mov al,1 1 10push ax 1 1 0pop bx 1 1 0add al,bl 0 0 0add al,100 1 0mul al 0 1 0检测点11.2CF OF SF ZF PFsub al,al 0 0 0 1 1m

16、ov al,10H 00 0 1 1add al,90H 0 0 1 0 1mov al,80H 001 0 1add al,80H 1 1 0 1 1mov al,0FCH 1 1 0 1 1add al,05H 10 0 0 0mov al,7DH 1 0 0 0 0add al,0BH 0 1 1 0 1检测点11.3(1) 补全下面的程序,统计F000:0处32个字节中,大小在32,128的数据的个数。mov ax,0f000hmov ds,axmov bx,0mov dx,0mov cx,32s: mov al,bxcmp al,32jb s0cmp al,120ja s0inc dxs0:inc bxloop s(2) 补全下面的程序,统计F000:0处32个字节中,大小在(32,128)的数据的个数。mov ax,0f000hmov ds,axmov bx,0mov dx,0mov cx,32s: mov al,bxcmp al,32jna s0cmp al,120jnb s0inc dxs0: inc bxloop s检测点11.4下面的程序执行后:(ax)=?mov ax,0push axpopfmov ax,0fff0hadd ax,0010hpushfpop axand al,11000101Band ah,00001000B解:(ax)=01000101B

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号