汇编语言王爽检测点答案Word文件下载.docx

上传人:b****7 文档编号:22281359 上传时间:2023-02-03 格式:DOCX 页数:42 大小:25.64KB
下载 相关 举报
汇编语言王爽检测点答案Word文件下载.docx_第1页
第1页 / 共42页
汇编语言王爽检测点答案Word文件下载.docx_第2页
第2页 / 共42页
汇编语言王爽检测点答案Word文件下载.docx_第3页
第3页 / 共42页
汇编语言王爽检测点答案Word文件下载.docx_第4页
第4页 / 共42页
汇编语言王爽检测点答案Word文件下载.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

汇编语言王爽检测点答案Word文件下载.docx

《汇编语言王爽检测点答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《汇编语言王爽检测点答案Word文件下载.docx(42页珍藏版)》请在冰豆网上搜索。

汇编语言王爽检测点答案Word文件下载.docx

movax,2

addax,ax

检测点2.2

(1)00010H1000fH

(2)0001H2000H

检测点2.3

共修改了4次ip第一次movax,bx第二次是subax,ax第三次是jmpax第四次是执行jmpax最后ip的值是0因为ax的值是零!

检测点3.1

(1)

2662H

E626H

D6E6H

FD48H

2C14H

0000H

00E6H

0026H

000CH

注意:

ax中存取的是字型数据,高地址存放高字节,低地址存放低字节!

(一定要小心)

①写出cpu的执行序列

Movax,6622

Jmp0ff0:

0100

Movax,2000H

Movds,ax

Movax,[0008]

Movax,[0002]

指令执行顺序

寄存器

CS

IP

DS

AX

BX

初值

2000H

0000

1000H

0

movax,6622h

0003

6622H

jmp0ff0:

1000h

movax,2000h

movds,ax

0005

movax,[0008]

0008

C389H

movax,[0002]

000B

EA66H

③数据和程序在计算机中都是以二进制的形式存放的,在区别程序和数据时,关键是看段地址,如果段地址是ds段,说明该内存中存放的是数据,如果段地址是cs段,说明该内存中存放的是程序指令

检测点3.2

Movss,ax

Movsp,0010H

Movax,1000H

Movsp,0000H

出栈时和入栈时的顺序,空栈时栈顶指向的是最高端地址!

栈满是栈顶指针指向的是最底端地址!

2。

实验任务

5BEA

5CCA

30F0

6023

00FE2200:

01005CCA

00FC2200:

00FE6023

01005CCA

010030F0

00FC22000:

00FC2E39

因为在DEBUG中T命令在执行修改寄存器ss的指令时,会产生中断,将现场保护起来,下一条指令也紧接着被执行!

实验三:

该实验自己做吧我做出来的东西只是我pc上的数据,可能在别的pc做出来的结果会不一样,在加之数据太多,我做了两次数据都没有完整的记下来,只好作罢!

实验四:

[bx]和loop的使用

assumecs:

code

codesegment

movax,0

movds,ax

movcx,64

movbx,200h

s:

movds:

[bx],ax

incbx

incax

loops

movax,4c00H

int21h

codeends

End

(2)如上题我一不小心写出来就是九条指令了!

呵呵!

(3)具体做法是将那段指令写道内存中,察看其在内存中的起始地址和终止地址,然后将该内存的内容复制到0:

200处就可以了!

检测点6.1

Movcs:

[dx],ax

cs

26或者1ah

popcs:

[dx]

发表于@2008年08月19日 01:

11:

00|评论

(2)|编辑|举报|收藏

旧一篇:

常用命令(转)|新一篇:

实验五:

编写、调试具有多个段的程序

Copyright©

maokaijiang

PoweredbyCSDNBlog

十一川藏疯狂之旅

本文来自CSDN博客,转载请标明出处:

王爽汇编语言答案(本答案是自己做的所有题目已在deubg中调试;

但难免有差错,发现的提醒我email:

maokaijiang1211@谢谢)

①1931(一直保持不变,由于pc不同答案有可能不一样)

②cs=1943ss=1941ds=1931(由于pc不同,所以答案也可能不同,这只是机子上的数据)

③第一空:

X—2

第二空:

X—1

(2)

1.一直不变

2.答案不一样,就不写了

3.X-2,X-1

4.(N/16+1)*16

(3)

2.答案不一样

3.X+3,X+4

(4)

答:

可能执行,如果不指明标号,cpu顺序执行指令,所有可能正确执行!

(5)

;

******************************************

将a段和b段指的数据依次相加,将结果保存到c段中

*******************************************

code

asegment

db1,2,3,4,5,6,7,8

aends

bsegment

bends

dsegment

db8dup(0)

dends

*********************************

代码段

start:

movax,d

moves,ax

movax,a

movcx,8

movbx,0

again1:

movdx,ds:

[bx]

moves:

[ax],dx

loopagain1

movax,b

movdx,0

again2:

adddx,ds:

loopagain2

movax,4c00h

endstart

(6)

*****************************************************

编写程序,用push指令将a段中的word数据,逆序存储到b段中

******************************************************

asegment

dw1,2,3,4,5,6,7,8

bsegment

dw0,0,0,0,0,0,0,0

movss,ax

movsp,10h

s:

push[bx]

addbx,2

loops

ht

(1)

本题略!

编程,将datasg段中的每个单词的前四个字母改写为大写字母

codesg,ss:

stacksg,ds:

datasg

stacksgsegment

stacksgends

datasgsegment

db'

1.displsy'

2.brows'

3.replace'

4.modify'

codesgsegment

movax,stacksg

movsp,16

movax,datasg

movcx,4

s0:

pushcx

movsi,0

s1:

moval,[bx+si+4]

addal,11011111B

mov[bx+si+4],al

incsi

loops1

adddx,16

popcx

loops0

codesgends

endstart

codesg,ds:

data,es:

table

datasegment

1975'

'

1976'

1977'

1978'

1979'

1980'

1981'

1982'

1983'

1984'

1985'

1986'

1987'

1988'

1989'

1990'

1991'

1992'

1993'

1994'

1995'

;

以上是表示21年的21个字符串

dd16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514

dd345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000

以上是表示21年公司总收的21个dword型数据

dw3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226

dw11542,14430,45257,17800

以上是表示21年公司雇员人数的21个word型数据

dataends

tablesegment

db21dup('

yearsummne?

?

'

tableends

movax,data

movax,table

movcx,21

movdi,0

**************************************

把年份送到table中

moval,[bx]

[di],al

moval,[bx+1]

[di+1],al

moval,[bx+2]

[di+2],al

moval,[bx+3]

[di+3],al

********************************************

把收入送到table中

movax,54h[bx]

movdx,56h[bx]

5h[di],ax

7h[di],dx

把人数送到table中

movax,0A8h[si]

0Ah[di],ax

计算人均收入并把其送到table中

*****************************************

divwordptr0A8h[si]

0Ch[di],ax

addsi,2

adddi,16

adddx,4

loops0;

循环21次

第九章收藏

检测点9.1

(1)程序如下:

assumecs:

datasegment

db0,0,0,0,0,0,0,0

movax,data

jmpwordptr[bx+1]

endsstart

理由是:

要是jmp跳转后执行第一条指令,本条指令是wordptr是段内转移必须满足ip=0所以ds:

[bx+1]的值必须为零,也就是data段的第二个数据必须为零

(2)第一空:

bx

(3)本题可以先用debug将内存2000:

1000中的内容写为BE000600.....然后再调试可得到

cs=0006hip=00BEh

检测点9.2

实现在内存2000H段中查找第一个值为零的字节,

找到后,将它的偏移地址存储到dx中

codesegment

movax,2000H

movcl,[bx]

movch,0

jcxzok

jmpshorts

ok:

movdx,bx

codeends

注:

利用jcxz判断cx是否等于零来发生跳转,注意判断的是一个字节!

检测点9.3

************************************************************

利用loop指令,实现在内存2000H段中查找第一个值为零的byte,找到后

将它的偏移地址存储到dx中

*************************************************************

jmpok

decbx

实验八:

codesg

nop

movdi,offsets

movsi,offsets2

movax,cs:

[si]

movcs:

[di],ax

s2:

jmpshorts1

nop

注:

程序可以正常运行,本程序主要考察了转移指令的使用!

实验九:

****************************************************************************

编程:

在屏幕中间分别显示绿色,绿底红色,白底蓝色的字符串'

welcometomasm!

'

.

实验原理见书中186页

code,ds:

display,ss:

stack

datasegment

db02H,24H,71H

stacksegment

db16dup(0)

stackends

displaysegment

db1024dup(0)

displayends

movax,data

movax,0b872H;

定义12行中间的起始位置

movcx,3

*****************************

做三次外循环,每次显示一种颜色

******************************

pushax

movcx,16

*********************************************

做上六次内循环,将数据段定义的字符串写入内存中

[si],al

moval,[di+10h]

[si+1],al

subsi,32;

将si回到初始位置

addsi,160;

换行

popax

incdi;

改变颜色

第十章收藏

检测点10.1

1000

0000

检测点10.2

ax=6

注意:

执行calls是ip的值为6接着进栈,然后执行popax相当于把ip的值放到ax中!

检测点10.3

ax=1100H

执行callfarptrs后cs=1000ip=3(10H)接着进栈然后执行popax此时ax=3

==〉addax,ax此时ax=6(100H)==〉popbx此时bx=1000==〉addax,bx此时ax=1100H

检测点10.4

ax=000B具体我就不一一分析了,呵呵!

检测点10.5

ax=3

(1)ax=1bx=0

实验十:

编写子程序

(1)显示字符串

*******************************************************************

显示字符串的子程序(dh)=行号(取值范围0-24),(dl)=列号(取值范围0-79)

(cl)=颜色,ds:

si指向字符串的首地址

********************************************************************

display,ss:

0

stackends

displaysegment

displayends

movdh,8

movdl,3

movcl,2

callshow_str

显示字符串的

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

当前位置:首页 > 高等教育 > 农学

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

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