《汇编语言王爽检测点答案 .》由会员分享,可在线阅读,更多相关《汇编语言王爽检测点答案 .(53页珍藏版)》请在金锄头文库上搜索。
1、汇编语言 王爽 检测点答案第一章.检测点1.1(1) 13(2) 1024,0,1023(3) 8192,1024(4) 230,220,210(5) 64,1,16,4(6) 1,1,2,2,4(7) 512,256(8) 二进制 注:符号指求幂运算(如: 230指2的30次方)第二章检测点2.1(1)大家做这题的时候一定要注意,要看清楚数制,比如是二进制还是十进制,还是十六进,我当时没注意,做错了!呵呵!第一空:F4A3H第二空:31A3H第三空:3123H第四空:6246H第五空:826CH第六空:6246H第七空:826CH第八空:04D8H第九空:0482H第十空:6C82H第十一空
2、:D882H第十二空:D888H第十三空:D810H第十四空:6246H(2)mov ax,2add ax,axadd ax,axadd ax,ax检测点2.2(1)00010H 1000fH(2)0001H 2000H检测点2.3共修改了4次ip 第一次mov ax,bx 第二次是sub ax,ax 第三次是jmp ax 第四次是执行 jmp ax 最后ip的值是0 因为ax的值是零!检测点3.1(1)第一空:2662H第二空:E626H第三空:E626H第四空:2662H第五空:D6E6H第六空:FD48H第七空:2C14H第八空:0000H第九空:00E6H第十空:0000H第十一空:0
3、026H第十二空:000CH注意:ax中存取的是字型数据 ,高地址存放高字节,低地址存放低字节!(一定要小心)(2)写出cpu的执行序列 Mov ax,6622Jmp 0ff0:0100Mov ax,2000HMov ds,axMov ax ,0008Mov ax,0002指令执行顺序 寄存器 CS IP DS AX BX 初值 2000H 0000 1000H 0 0 mov ax,6622h 2000H 0003 1000H 6622H 0000 jmp 0ff0:0100 1000h 0000 1000H 6622H 0000 mov ax,2000h 1000H 0003 1000H
4、2000H 0000 mov ds,ax 1000H 0005 2000H 2000H 0000 mov ax,0008 1000H 0008 2000H C389H 0000 mov ax,0002 1000H 000B 2000H EA66H 0000 数据和程序在计算机中都是以二进制的形式存放的,在区别程序和数据时,关键是看段地址,如果段地址是ds段,说明该内存中存放的是数据,如果段地址是cs段,说明该内存中存放的是程序指令 检测点3.2(1)Mov ax,2000HMov ss,axMov sp,0010H(2)Mov ax,1000HMov ss,axMov sp,0000H注意:出
5、栈时和入栈时的顺序,空栈时栈顶指向的是最高端地址!栈满是栈顶指针指向的是最底端地址!2。实验任务(1)5BEA5CCA 30F0602300FE 2200:0100 5CCA00FC 2200:00FE 602300FE 60230100 5CCA 00FE 2200:0100 30F000FC 22000:00FC 2E39 (2) 因为在DEBUG 中T命令在执行修改寄存器ss的指令时,会产生中断,将现场保护起来,下一条指令也紧接着被执行!实验三:该实验自己做吧 我做出来的东西只是我pc上的数据,可能在别的pc做出来的结果会不一样,在加之数据太多,我做了两次数据都没有完整的记下来,只好作罢
6、!实验四: bx和loop的使用(1)assume cs:code code segment mov ax,0 mov ds,ax mov cx,64 mov bx,200h s: mov ds:bx,ax inc bx inc axloop s mov ax,4c00H int 21hcode endsEnd(2)如上题 我一不小心写出来就是九条指令了!呵呵!(3)具体做法是将那段指令写道内存中,察看其在内存中的起始地址和终止地址,然后将该内存的内容复制到0:200处就可以了!检测点6.1(1)Mov cs:dx,ax(2)第一空:cs第二空:26或者1ah第三空:pop cs:dx发表于
7、2008年08月19日01:11:00 | 评论( 2 ) | 编辑| 举报| 收藏 旧一篇:常用命令(转) | 新一篇:实验五: 编写、调试具有多个段的程序 Copyright maokaijiang Powered by CSDN Blog 十一川藏疯狂之旅 本文来自CSDN博客,转载请标明出处:http:/ 所有题目已在deubg中调试;但难免有差错,发现的提醒我 email: 谢谢) (1) 1931(一直保持不变,由于pc不同 答案有可能不一样)cs=1943 ss=1941 ds=1931 (由于pc不同,所以答案也可能不同,这只是机子上的数据)第一空:X2 第二空:X1 (2)
8、1.一直不变2.答案不一样,就不写了3.X-2,X-14.(N/16+1)*16 (3)1.一直不变2.答案不一样3.X+3,X+4 (4)答:可能执行,如果不指明标号,cpu顺序执行指令,所有可能正确执行!(5);*;将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 endsd segment db 8 dup(0)d ends;*;代码段;*code segmentstart: mov ax,d mov es,ax mov ax,a
9、mov ds,ax mov cx,8 mov ax,0 mov bx,0again1: mov dx,ds:bx mov es:ax,dx inc bx inc axloop again1 mov ax,b mov ds,ax mov ax,0 mov bx,0 mov cx,8 mov dx,0again2: add dx,ds:bx mov es:ax,dx inc ax inc bxloop again2 mov ax,4c00h int 21hcode endsend start(6);*;编写程序,用push指令将a段中的word数据,逆序存储到b段中;*assume cs:code
10、 a segment dw 1,2,3,4,5,6,7,8a endsb segment dw 0,0,0,0,0,0,0,0b endscode 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本文来自CSDN博客,转载请标明出处:ht(1)本题略!(2);*;编程,将datasg 段中的每个单词的前四个字母改写为大写字母;*assume cs:codesg,ss:stacksg,ds:datasgstacksg segment dw 0,0,0,0,0,0,0,0stacksg endsdatasg segment db 1. displsy db 2. brows db 3. replace db 4. modify datasg segmentcodesg segmentstart: mov ax,stacksg mov ss,ax mo