汇编语言课后答案重点讲义资料.docx

上传人:b****5 文档编号:27961661 上传时间:2023-07-06 格式:DOCX 页数:27 大小:34.17KB
下载 相关 举报
汇编语言课后答案重点讲义资料.docx_第1页
第1页 / 共27页
汇编语言课后答案重点讲义资料.docx_第2页
第2页 / 共27页
汇编语言课后答案重点讲义资料.docx_第3页
第3页 / 共27页
汇编语言课后答案重点讲义资料.docx_第4页
第4页 / 共27页
汇编语言课后答案重点讲义资料.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

汇编语言课后答案重点讲义资料.docx

《汇编语言课后答案重点讲义资料.docx》由会员分享,可在线阅读,更多相关《汇编语言课后答案重点讲义资料.docx(27页珍藏版)》请在冰豆网上搜索。

汇编语言课后答案重点讲义资料.docx

汇编语言课后答案重点讲义资料

1-1

(1)

传统计算机:

①控制器;②运算器;③存储器;④输入设备;⑤输出设备。

现代计算机:

①处理器;②存储系统;③输入输出系统。

(2)直接控制硬件,易产生运行速度快,目标代码小的程序。

(3)处理器中数量多,使用频率改,多种用途的一组寄存器。

(4)后进先出。

(5)6个状态标志:

CF、AF、ZF、SF、PF、OF;3个控制标志位:

DF、IF、TF。

(6)左边最高位。

(7)无。

(8)字母大小写不同,但是表示同一个符号。

(9)不被汇编。

(10)源程序和目标代码,各种标识符的说明。

1-2

(1)√

(2)×,属于专用寄存器

(3)×,8个16位通用寄存器

(4)√

(5)×,不一样,原因见P25

(6)√

(7)×,4部分需要分隔符区别

(8)√

(9)×,程序终止代表程序执行结束,不意味汇编结束。

汇编是将源程序翻译成目标模块代码的过程,源程序的最后必须有一条END伪指令表明汇编结束,END指令之后的任何内容不被汇编程序处理。

(10)√

1-3

(1)1M=220BYTE

(2)8

(3)BX,CX,SI,DI,BP,SP

(4)16,DL,DH

(5)4,16

(6)低4位地址全为0,64KB

(7)段地址,偏移地址,IP

(8)目录

(9)操作码,地址码/操作数

(10).ASM,目标模块,.EXE

1-4

见P2

1-5

见P10

1-6

(1)0FFF0H

(2)417H

(3)24500H

(4)0BC777H

1-7

代码段:

主要存放程序中的指令代码。

数据段:

主要存放当前运行程序所用的数据。

堆栈段:

指明当前运行程序所使用的堆栈区域。

1-8

见P4-P5

1-9

见课件

1-10

见P25-P27

1-11

见P16或者课件

1-12

见P17或者课件

1-13

FFH,Again,next,h_asscii

1-14

见P27或者课件

2-1

(1)没有,因为8位字节表示的范围:

0~255

(2)没有,都是46H

(3)因为(34+67H)*3是常数

(4)以避免与不能以数字开头的标识符混淆

(5)不能,因为8位字节表示的范围:

0~255

(6)防止发生非法操作

(7)寻找操作数存储的地址

(8)有效地址直接包含在指令中

(9)DS

(10)不正确,因为类型不匹配

2-2

(1)√

(2)×,小写字母排在大写字母之后

(3)√

(4)×,不一样多

(5)√

(6)√

(7)×,没有对齐,因为0403H是奇数地址,不是偶数地址

(8)√

(9)√

(10)√

2-3

(1)97,61,a

(2)0DH,0AH

(3)DB,OFFSET

(4)8843H

(5)DWORD,4,WORDPTR

(6)3

(7)立即数寻址,寄存器寻址,存储器寻址

(8)寄存器寻址,立即数

(9)4028H

(10)DS,SS

2-4

(1)255

(2)0

(3)94

(4)239

2-5

(1)00010010B

(2)00100100B

(3)01101000B

(4)10011001B

2-6

(1)91

(2)89

(3)36

(4)90

2-7

(1)0B

(2)01111111B

(3)10000001B

(4)11000111B

2-8

(1)8A36H,CF=0

(2)4AE4H,CF=1

(3)0AE10H,CF=0

(4)0ECA9H,CF=1

2-9

数码0~9:

30H~39H

大写字母A~Z:

41H~5AH

小写字母a~z:

61H~7AH

0DH:

回车符CR,0AH:

换行符LF

2-10

Datasegment

my1bDB‘PersonalComputer’

my2bDB20

my3bDB14h

my4bDB00010100B

my5wDW20DUP(?

my6cEQU100

my7cEQU

Dataends

2-11

Datasegment

NUM=5

DATALISTDW-10,2,5,4,?

Dataends

2-122-13

-

movax,offsetmess

;AX=114H

movax,typebuff+typemess+typevard

;AX=1+1+4=6

movax,sizeofvarw+sizeofbuff+sizeofmess

;AX=2*2+10*1+5*1=19

movax,lengthofvarw+lengthofvard

;AX=2+1=3

-

-

-

-

-

0FFH

0FBH

o

118H

00H

l

117H

10H

l

116H

04H

e

115H

04H

mess

h

114H

04H

-

113H

-

-

112H

0FFH

-

111H

04H

-

110H

04H

-

10FH

04H

-

10EH

-

-

10DH

0FFH

-

10CH

04H

-

10BH

04H

buff

-

10AH

04H

12H

109H

-

34H

108H

0FFH

56H

107H

46H

vard

78H

106H

45H

04H

105H

10H

varb

03H

104H

0AH

56H

103H

43H

78H

102H

42H

12H

101H

41H

varw

34H

100H

 

2-14

2-15

varDD12345678H

12H

movbx,wordptrvar;BX=5678H

movcx,wordptrvar+2;CX=1234H

movdl,byteptrvar;DL=78H

movdh,byteptrvar+3;DH=12H

34H

56H

var

78H

2-16

P56图2-10和图2-11

 

 

2-17

(1)立即数寻址

(2)直接寻址

(3)寄存器寻址

(4)寄存器间接寻址

(5)寄存器相对

(6)寄存器相对寻址

(7)基址变址寻址

(8)相对基址变址寻址

3-1

(1)MOVSI,BYTEPTR250或者MOVAL,BYTEPTR250

(2)DX与CL类型不匹配

(3)堆栈的操作“后进先出”

(4)MOVBX,OFFSET[SI]汇编时并不知道指令在执行时SI等于什么,所以是错误的

(5)结果是0

(6)目的操作数

(7)大写=小写ANDDFH;D5位清0

小写=大写OR20H;D5位置1

大/小写=小/大写XOR20H;D5位求反

(8)利用CF和OF结果判断

(9)DX.AX

(10)逻辑与运算规则类似于二进制的乘法。

3-2

(1)×,因为MOV指令不影响标志位

(2)×,空操作指令NOP(=XCHGAX,AX)

(3)×,堆栈是利用主存实现的,MOVBX,[BP+4]也是对的

(4)√

(5)√

(6)×,ADD指令影响6个状态标志位,而INC指令不影响进位CF标志,影响其他状态标志位。

(7)×,有符号数进行符号扩展,位数加长一倍,数值不变

(8)×,CMP指令不保存结果

(9)×,NOT指令不影响标志位

(10)×,无符号数SHL指令左移一位,就是乘2

3-3

(1)减少(-2)

(2)DX,(SP)=(SP)+2

(3)78894111

(4)26H,PF=0,0BE26H,PF=0

(5)0FF68H,SF=1

(6)0FF98H

(7)0000H

(8)0,0,0

(9)01234678H

(10)CL,4

3-4

(1)MOVAX,100

(2)MOVBYTEPTRVAR,100

(3)MOVAX,BX

(4)MOVBYTEPTRVAR,AL

(5)MOVDS,AX

(6)MOVAX,WORDPTRVAR

(7)MOVDS,WORDPTRVAR

(8)MOVAX,DS

(9)MOVWORDPTRVAR,DS

3-5

(1)类型不匹配

(2)IP自动赋值

(3)段寄存器不能直接赋值

(4)段寄存器之间不能直接赋值

(5)类型不匹配

(6)目的操作数没有指明数据类型

(7)MOVAX,[BX+DI]

(8)MOV指令中目的操作数不能为立即数

3-6

MOVAX,BX

MOVBX,WORDPTR[DI]

MOVWORDPTR[DI],AX

3-7

后进先出的主存结构,入栈指令:

PUSH,出栈指令:

POP

3-8

SP=4302H

3-9

执行结果:

AL=12H

如果不用XLAT指令,则用MOVAL,BYTEPTR[BX+AL]指令替换XLAT指令

3-10

P75-76或者见课件

3-11

(1)

movax,80h;AX=80h

addax,3;AX=83h,CF=0,SF=0

addax,80h;AX=103h,CF=0,OF=0

adcax,3;AX=106h,CF=0,ZF=0

(2)

movax,100;AX=100

addax,200;AX=300,CF=0

(3)

movax,100;AX=100

addal,200;AX=002Ch,CF=1注:

100+200=64h+0C8h=[1]2Ch

(4)

moval,7fh;AL=7fh

subal,8;AL=77h,CF=0,SF=0

subal,80h;AL=0f7h,CF=1,SF=1

sbbal,3;AL=0f3h,CF=0,SF=0

3-12

指令

AL

CF

ZF

SF

OF

PF

moval,89h

89h

不变

不变

不变

不变

不变

addal,al

12h

1

0

0

1

1

addal,9dh

0afh

0

0

1

0

1

cmpal,0bch(不保存结果)

0afh

1

0

1

0

1

subal,al

00h

0

1

0

0

1

decal(不影响CF)

0ffh

0

0

1

0

1

incal(不影响CF)

00h

0

1

0

0

1

3-13

(1)DX=11H,AX=0F00H

(2)DX=00FFH,AX=0E000H

3-14

(1)ADDDX,BX

(2)ADDAL,BYTEPTR[BX+SI]

(3)ADDWORDPTR[BX+0B2H],CX

(4)ADDWORDPTRVAR,3421H

(5)ADDAX,0A0H

3-15

;数据段

buffer1DD12345678h

buffer2DD56781234h

;代码段

MOVAX,WORDPTRbuffer1

MOVDX,WORDPTRbuffer1+2

SUBAX,WORDPTRbuffer2

SBBDX,WORDPTRbuffer2+2

3-16

(1)

movsi,10011100b;SI=9Ch

andsi,80h;SI=80h

orsi,7fh;SI=0FFh

xorsi,0feh;SI=01h

(2)

movax,1010b;AX=00001010B

movcl,2

shrax,cl;AX=00000010B,CF=1

shrax,1;AX=00000100B,CF=0

andax,3;AX=00000000B,CF=0

(3)

movax,1011b;AX=00001011B

movcl,2

rolax,cl;AX=00101100B,CF=0

rolax,1;AX=00010110B,CF=0

orax,3;AX=00010111B,CF=0

(4)

xorax,ax;AX=0,CF=0,OF=0,ZF=1,SF=0,PF=1

3-17

指令

AX

CF

OF

SF

ZF

PF

movax,1470h

1470h

不变

不变

不变

不变

不变

andax,ax

1470h

0

0

0

0

0

orax,ax

1470h

0

0

0

0

0

xorax,ax

0000h

0

0

0

1

1

notax(不影响标志位)

0ffffh

0

0

0

1

1

testax,0f0f0h(不保存结果)

0ffffh

0

0

1

0

1

3-18

AND复位某些位(同0与),不影响其他(同1与)

OR置位某些位(同1或),不影响其他(同0或)

XOR求反某些位(同1异或),不影响其他(同0异或)

andbl,11110110b;BL中D0和D3清0,其余位不变

orbl,00001001b;BL中D0和D3置1,其余位不变

xorbl,00001001b;BL中D0和D3求反,其余位不变

3-19

;数据段

bcddb92h

asciidb?

?

;代码段

moval,bcd

andal,0fh

oral,30h

movascii,al

movah,bcd

movcl,4

shrah,cl

orah,30h

movascii+1,ah

3-20

运算公式:

(VAR1*VAR2+VAR3-540)/VAR4

运算结果:

商存放在AX中,余数存放在DX中

3-21

X=7

等效乘法指令如下:

MOVX,7

IMULX

3-22

MOVSI,AX

MOVCL,4

SHLSI,CL

MOVBX,AX

SHLBX,1

SHLBX,1

ADDAX,SI

ADDAX,BX

3-23

;数据段

numdb6,7,7,8,3,0,0,0;被转换数字

tabdb'67783000';代码表

;代码段

movcx,lengthofnum;CX=8

movsi,offsetnum;SI=num的偏移地址,指向被转换的地址表

movdi,offsettab;DI=tab的偏移地址,指向代码表

again:

movdl,[si];DL=被转换的数字

xchgdl,[di];DL=转换的代码

mov[si],dl;转换后的代码置于被转换数字的地址中

movah,2

int21h;显示DL中的字符=转换的代码

incsi;指向下一个被转换数字的地址

incdi;指向下一个代码的地址

loopagain;循环

运行结果:

显示6783000

替换寄存器相对寻址,其代码如下:

;数据段

numdb6,7,7,8,3,0,0,0;被转换数字

tabdb'67783000';代码表

;代码段

movcx,lengthofnum;CX=8

movsi,0;初始化num的偏移首地址

movdi,0;初始化tab的偏移首地址

again:

movdl,num[si];DL=被转换的数字

xchgdl,tab[di];DL=转换的代码

movnum[si],dl;转换后的代码置于被转换数字的地址中

movah,2

int21h;显示DL中的字符=转换的代码

incsi;指向下一个被转换数字的地址

incdi;指向下一个代码的地址

loopagain;循环

 

3-24

运行结果:

大写字母转换为小写字母,显示welldone

修改成BX寄存器相对寻址,其代码如下:

;数据段

msgdb'WELCOME','$'

;代码段

movcx,(lengthofmsg)-1

xorbx,bx

again:

moval,msg[bx]

addal,20h

movmsg[bx],al

incbx

loopagain

movdx,offsetmsg

movah,9

int21h

3-25

movarray2[bx],ax

addbx,2

 

4-4

MOVAX,var1

MOVBX,6

MULBX;(DX,AX)←var1*6

MOVBX,var2

SUBBX,7;BX←var2-7

DIVBX;AX←(var1*6)/(var2-7)

ADDAX,var3;AX←(var1*6)/(var2-7)+var3

MOVvar4,AX;var4←(var1*6)/(var2-7)+var3

随堂测试

设x,y,z,v均为16位带符号数,分别装在X,Y,Z,V存储单元中,编写指令代码段,实现(v-(x*y+z-540))/x运算公式,商存储在W存储单元中,余数在W+2存储单元中。

答案:

MOVAX,X

IMULY;(DX,AX)←x*y

MOVCX,AX

MOVBX,DX;(BX,CX)←x*y

MOVAX,Z

CWD;(DX,AX)←z扩展成32位

ADDCX,AX

ADCBX,DX;(BX,CX)←x*y+z

SUBCX,540

SBBBX,0;(BX,CX)←x*y+z-540

MOVAX,V

CWD;(DX,AX)←v扩展成32位

SUBAX,CX

SBBDX,BX;(DX,AX)←v-(x*y+z-540)

IDIVX;v-(x*y+z-540),AX←商,DX←余数

MOVW,AX;W←商

MOVW+2,DX;W+2←余数

4-10

(1)CMPDX,DI

JAabove

(2)CMPBX,SI

JGgreater

(3)CMPBX,0

JEzero

(4)CMPBX,SI

JOoverflow

(5)CMPSI,BX

JLEless_eq

(6)CMPDI,DX

JBEbelow_eq

4-13

思路:

(1)BX←AX,BX逻辑左移1位,将AX的符号位移入CF;

(2)RCLDX,1将AX的符号位移入DX;

(3)重复

(1)~

(2)16次。

 

MOVCX,16

again:

MOVBX,AX

SHLBX,1

RCLDX,1

LOOPagain

或者3.20题目思想:

MOVDX,AX

MOVCL,15

SARDX,CL

4-18

思路同4-13:

MOVCX,3

again:

SHLAX,1

RCLDX,1

LOOPagain

 

4-15编程:

先提示输入数字“InputNumber:

0~9”,然后在下一行显示输入的数字,结束;如果不是键入了0~9数字,就提示错误“Error!

”,继续等待输入数字。

DATASEGMENT

inputstringdb'InputNumber:

0~9',13,10,'$'

errorstringdb'Error!

',13,10,'$'

DATAENDS

CODESEGMENT

ASSUMEDS:

DATA,CS:

CODE

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETinputstring

MOVAH,09H

INT21H

INPUT:

MOVAH,07H;键盘输入字符到AL,无回显

INT21H

CMPAL,'0';小于0,转移,显示'Error!

'

JBERROR

CMPAL,'9';大于9,转移,显示'Error!

'

JAERROR

MOVDL,AL;0~9数字,回显/输出到屏幕

MOVAH,02H

INT21H

JMPEXIT

ERROR:

MOVDX,OFFSETerrorstring;输出'Erro

MOVAH,09H

INT21H

JMPINPUT

EXIT:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

4-26以MOV指令为例,说明串操作指令的寻址特点,并用MOV和ADD等指令实现MOVSW的功能(假设DF=0)。

DATASEGMENT

srcmsgDB'srcstring=','$'

srcstringDB'helloeverybody!

'

srcendDB'$'

stringlengthEQU(lengthofsrcstring)/2

dstmsgDB'dststring=','$'

dststringDBstringlengthdup(?

),'$'

DATAENDS

CODESEGMENT

ASSUMEDS:

DATA,CS:

CODE

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVDX,OFFSETsrcmsg

MOVAH,09H

INT21H

MOVDX,OFFSETsrcstring

MOVAH,09H

INT21H

MOVCX,stringlength

MOVBX,0

CLD

AGAIN:

MOVAX,WORDPTRsrcstring[BX]

MOVWORDPTRdst

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

当前位置:首页 > 外语学习 > 法语学习

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

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