汇编语言课后习题答案郑晓薇后的.docx

上传人:b****6 文档编号:16023719 上传时间:2023-07-10 格式:DOCX 页数:18 大小:27.20KB
下载 相关 举报
汇编语言课后习题答案郑晓薇后的.docx_第1页
第1页 / 共18页
汇编语言课后习题答案郑晓薇后的.docx_第2页
第2页 / 共18页
汇编语言课后习题答案郑晓薇后的.docx_第3页
第3页 / 共18页
汇编语言课后习题答案郑晓薇后的.docx_第4页
第4页 / 共18页
汇编语言课后习题答案郑晓薇后的.docx_第5页
第5页 / 共18页
汇编语言课后习题答案郑晓薇后的.docx_第6页
第6页 / 共18页
汇编语言课后习题答案郑晓薇后的.docx_第7页
第7页 / 共18页
汇编语言课后习题答案郑晓薇后的.docx_第8页
第8页 / 共18页
汇编语言课后习题答案郑晓薇后的.docx_第9页
第9页 / 共18页
汇编语言课后习题答案郑晓薇后的.docx_第10页
第10页 / 共18页
汇编语言课后习题答案郑晓薇后的.docx_第11页
第11页 / 共18页
汇编语言课后习题答案郑晓薇后的.docx_第12页
第12页 / 共18页
汇编语言课后习题答案郑晓薇后的.docx_第13页
第13页 / 共18页
汇编语言课后习题答案郑晓薇后的.docx_第14页
第14页 / 共18页
汇编语言课后习题答案郑晓薇后的.docx_第15页
第15页 / 共18页
汇编语言课后习题答案郑晓薇后的.docx_第16页
第16页 / 共18页
汇编语言课后习题答案郑晓薇后的.docx_第17页
第17页 / 共18页
汇编语言课后习题答案郑晓薇后的.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

汇编语言课后习题答案郑晓薇后的.docx

《汇编语言课后习题答案郑晓薇后的.docx》由会员分享,可在线阅读,更多相关《汇编语言课后习题答案郑晓薇后的.docx(18页珍藏版)》请在冰点文库上搜索。

汇编语言课后习题答案郑晓薇后的.docx

汇编语言课后习题答案郑晓薇后的

ModifiedbyJEEPonDecember26th,2020.

 

汇编语言课后习题答案郑晓薇后的

习题一

1

 

2

5E8AH,0BE6H,3DEH,4940H

3

00011101+00110101=01010010=52H=82

4

5000020A3H,FF94H,00003456H,007FH,FFFFEC00H

6无符号数:

0~65535,0000H~FFFFH;带符号数:

-32768~+32767,8000H~7FFFH

7

(1)38H等于十进制数56,是十进制数56的补码,数字8的ASCII码,十进制数38的压缩BCD码

(2)FFH等于十进制数-1,是带符号数-1的补码,无符号数为255(3)5AH等于十进制数90,是十进制数90的补码,大写字母Z的ASCII码(4)0DH等于十进制数13,是十进制数13的补码,回车符的ASCII码

8

(2)46=00101110B=2EH,补码00101110B,压缩BCD码01000110,ASCII码3436H

9

(1)56+63=01110111B,CF=0,SF=0,ZF=0,OF=0

(2)83-45=00100110B,CF=0,SF=0,ZF=0,OF=0(4)-92-37=01111111B,CF=1,SF=0,ZF=0,OF=1

10

回车、换行、响铃、ESC键、空格键、@、P、p

习题二

9最少划分为16个逻辑段,最多划分为65536个逻辑段(每段16个字节)

10CS:

IP,DS:

BX、SI、DI,ES:

BX、SI、DI,SS:

SP、BP

11字节单元保存8位数,字单元保存16位数。

根据源操作数的属性确定要访问的是字节单元还是字单元。

12对于字节单元来说,偶地址和奇地址一样;对于字单元而言,最好用偶地址保存,可减少CPU的访存次数。

13首单元的物理地址=38AE8H,末单元的物理地址=38AE8H+7FFFH=40AE7H

16

(1)物理地址=27679H

(2)物理地址=20F92H(3)物理地址=20F92H

(2)和(3)的物理地址是一样的。

说明逻辑地址不唯一,多个逻辑地址可对应到同一个物理单元上。

17代码段CS:

IP的物理地址=55A84H堆栈段SS:

SP的物理地址=4DB65H数据段DS:

BX的物理地址=17678H附加段ES:

DI的物理地址=2BA41H

18当前栈指针所指单元的物理地址是1522CH。

堆栈区中还能保存254个字。

19执行E200

20执行U100

21执行RCX,然后输入100

22执行EDS:

0‘a’‘b’‘c’‘d’

习题三

3MOVAX,BX源操作数为寄存器寻址,EA无,物理地址无

MOVAX,1290H立即寻址,EA无,物理地址无

MOVAX,[BX]寄存器间接寻址,EA=1290H,物理地址=2FBB0H

MOVAX,DS:

[1290H]直接寻址,EA=1290H,物理地址=2FBB0H

MOVAX,[BP]寄存器间接寻址,EA=6756H,物理地址=26A56H

MOV[DI][BX],AX目的操作数为基址变址寻址,EA=3C06H,物理地址=32526HMOVES:

[SI],AX寄存器间接寻址,EA=348AH,物理地址=50CAAH

7

MOVAX,[CX]错。

CX不能为间址寄存器MOVAL,1200H错。

立即数超出8位寄存器范围MOVAL,BX错。

两个操作数不匹配MOV[SI][DI],AX错。

两个变址寄存器不能在一起MOVES:

[DX],CX错。

DX不能为间址寄存器MOV[AX],VALUE错。

AX不能为间址寄存器MOVCOUNT,[SI]错。

两个操作数不能都是存储单元

8

(1)MOVAX,BX

(2)MOVCL,15(3)ADDAX,[BX](4)MOV[BX+SI],AL(5)MOVAX,VALUE[SI](6)SUBAX,DS:

[2000H]

9

(1)ADDAX,[X+4]MOVY,AX

(2)MOVBX,4ADDAX,X[BX]MOVY,AX(3)MOVBX,4MOVSI,OFFSETXADDAX,[BX+SI]MOVY,AX

10立即寻址方式中操作数(立即数)和指令一起存放在代码段中。

习题四

10

(1)DATASEGMENT

XDW0

YDW0

DATAENDS

(2)STRINGDB’Computer’

(3)COUNTDB100DUP()

(4)PIEQU(5)VALUELABELBYTE 

11

(1)对。

(2)错。

260超出了字节范围。

(3)错。

X3是字节型,1234H是字型,不匹配。

(4)对。

(5)错。

缺少DUP。

(6)对。

12

(1)AL=3。

(2)AX=2103H。

(3)DX=TABLE的偏移地址。

(4)CL=33H(5)BX=TABLE的段地址。

(6)BX=1。

(7)DX=TABLE的偏移地址。

13

MOVDX,2012H

MOVAX,5D68H

MOVCX,1003H

MOVBX,49A6HADDAX,BX(SUBAX,BX)ADCDX,CX(SBBDX,CX)

14SUBAX,CXSBBDX,0

15MOVAX,extraMOVES,AX

16

(1)MOVAL,16ADDAL,XMOVBL,5IMULBLMOVZ,AX

(2)MOVBL,4MOVAL,XIDIVBLSUBAL,YMOVZ,AX(3)MOVAL,XMOVBL,8IMULBLMOVDX,AXMOVAH,0MOVAL,YMOVBL,16IDIVBLCBWADDDX,AXMOVAH,0MOVAL,WIMULALSUBDX,AXMOVZ,DX(4)MOVAL,XADDAL,YMOVBL,XSUBBL,YMOVAH,0IMULBLMOVZ,AXMOVAL,XIDIVYCBWSUBZ,AX

17Z=(5+22-15)*14=168

18从伪指令ENDSTART处获知程序从START标号开始。

19

(1)减法:

(2)加法:

MOVAX,8576HMOVAX,8576H

MOVBX,9988HMOVBX,9988H

SUBAX,BXADDAX,BX

结果:

AX=EBEEH结果:

AX=1EFEH

CF=1,OF=0,ZF=0,SF=1CF=1,OF=1,ZF=0,SF=0

21

(1)MOVAL,56HMOVBL,34HADDAL,BLDAAMOVY1,AL

(2)MOVAX,128HMOVBX,35HSUBAX,BXDASMOVY2,AL(3)MOVAL,68HMOVBL,23HADDAL,BLMOVBL,45HSUBAL,BLDASMOVY3,AL

22

(1)MOVAX,0708HMOVBX,0406HADDAL,BLADDAH,BH;不用带进位加AAA;加法调整,含进位调整MOVBX,AXXCHGAH,AL;高4位调整AAAMOVBH,ALMOVZ1,BX;保存十位、各位,百位在CF中

(2)MOVAX,0905HMOVBX,0207HSUBAL,BLSUBAH,BH;不用带借位减AAS;减法调整MOVZ2,AX(3)MOVAX,0102HMOVBX,0006HMULBX;乘法先不用调整MOVBX,0303HSUBAX,BXAAS;减法调整MOVZ3,AX(4)MOVAX,0704HMOVBX,0108HADDAL,BLADDAH,BHAAA;加法调整MOVBL,6AAD;除法调整DIVBLMOVBH,AH;余数保存在BHANDAX,000FHAAA;商调整MOVZ4,AX;保存商

23

.modelsmall

.data

buffdb

.code

start:

movax,@data

movds,ax

movah,1;键盘输入

int21h

subal,30h;去掉ASCII码

movbuff,al

movah,4ch

int21h

endstart

24

.modelsmall.codestart:

movah,1;键盘输入int21hsubal,20h;变为大写movdl,almovah,2int21hmovah,4chint21hendstart

25

.modelsmall.dataxdb12hydb34h.codestart:

movax,@datamovds,axmoval,xaddal,y;结果为46Hmovah,al;AH=46Handal,0fh;AL=06Hmovcl,4rolah,cl;AH=64Handah,0fh;AH=04Haddax,3030h;AX=3436Hmovbx,axmovdl,bh;显示4movah,2int21hmovdl,bl;显示6int21hmovah,4chint21hendstart

26

datasegment

xdb'','','','',''

db'','','','','';建立字符表

ydb5dup();存放查到平方根udb3;要查的数dataendscodesegmentassumecs:

code,ds:

datastart:

movax,datamovds,axmoval,u;要查的数movcl,5mulcl;u*5=15(号单元开始)movah,0movbx,ax;地址保存到bxmovsi,0let1:

moval,x[bx];取出平方根数字movy[si],al;存入yincsiincbxlooplet1;循环取出5次movah,4chint21hcodeendsendstart

27

.modelsmall.datax1db'zhangyan$';姓名为10个字符宽度x2db'lili$'x3db'wanglan$'x4db'zhaoxue$'x5db'lijiang$'udb3;要查的学号.codestart:

movax,@datamovds,axmoval,u;给出学号movcl,10mulcl;u*10=30(号单元开始)movah,0movdx,ax;地址保存到dxmovah,9;9号功能显示字符串int21hmovah,4chint21hendstart

28编程实现公式计算Z=X/4+16Y。

.modelsmall

.data

xdb4

ydb6

zdb

.code

start:

movax,@data

movds,ax

moval,x;

movcl,2

saral,cl;X/4

movcl,4

movbl,y

salbl,cl;16Y

addal,bl;X/4+16Y

movz,al

movah,4ch

int21h

endstart

29

.modelsmall

.data

ydb,

.code

start:

movax,@data

movds,ax

moval,3;设al=3

movcl,6

mulcl;al*6

movcl,4;设cl=4

subal,cl;相减

movbl,3

idivbl;/3

movy,al;商

movy+1,ah;余数

movah,4ch

int21h

endstart

习题五

11进位标志CF=1

12先把AX的值除以8等于0246H,再把高12位屏蔽为0,剩下AL=06H加上30H变为ASCII码显示出来。

13

判断X>0,是,Z=X-Y;否则Z=X的绝对值

14

(1)目的操作数是存储单元时,要用PTR伪操作指出单元的属性

(2)DS段寄存器使用非法(3)立即数使用非法(4)目的操作数不允许是立即数(5)两个操作数不允许都是存储单元(6)移位次数超过1要用CL表示。

15

16

(1)AL=30H

(2)AL=B7H(3)AL=C8H(4)AL=38H

27分支程序设计。

完成如下公式的计算,请写出程序。

(X+3)/2X>0

Y=0X=0

X×4X<0

程序如下:

DATASEGMENT

XDB23

YDB

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAL,X

CMPAL,0

JESUB2

JGSUB1

MOVCL,2

SALAL,CL

JMPSHORTSUB2

SUB1:

ADDAL,3

SARAL,1

SUB2:

MOVY,AL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

28

设X、Y、Z为字节单元。

如果X≥0,Z=4X-Y/16,否则,Z=X的绝对值。

编程序实现。

程序如下:

DATASEGMENT

XDB3

YDB5

ZDB

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAL,X

CMPAL,0

JLSS1

MOVCL,2

SALAL,CL

MOVBL,Y

MOVCL,4

SARBL,CL

SUBAL,BL

JMPOUT1

SS1:

NEGAL

OUT1:

MOVZ,AL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

29字数组M中有10个数据,分类统计其中正数、负数、0的个数,分别存入POSI、NEGA、ZERO单元。

程序如下:

DATA1SEGMENT

MDW21,-34,32,112,-324,0,76,0,48,50

POSIDW

NEGADW

ZERODW

DATA1ENDSCODE1SEGMENTASSUMECS:

CODE1,DS:

DATA1START:

MOVAX,DATA1MOVDS,AXMOVCX,10LEASI,MAGAIN:

CMPWORDPTR[SI],0JLLOWERJEEQUALINCPOSIJMPLPP1LOWER:

INCNEGAJMPLPP1EQUAL:

INCZEROLPP1:

ADDSI,2DECCXJNZAGAINMOVAH,4CHINT21HCODE1ENDSENDSTART

30试编写程序,从键盘接收一英文单词,以空格结束,将其存入BUF开始的存储单元中,并在最后加上字符串结束符’$’。

主要程序部分:

LEABX,BUFLOP:

MOVAH,1INT21HCMPAL,20HJENEXTMOV[BX],ALINCBXJMPLOPNEXT:

MOVBYTEPTR[BX],’$’

31

编程。

将AX寄存器中的16位数分成4组,每组4位,从低到高分别放在AL,BL,CL,DL中。

程序段:

START:

MOVAX,1234HMOVBX,AXANDAL,0FH;4ANDBL,0F0H;3ANDAH,0FHMOVCL,AH;2ANDBH,0F0HMOVDL,BH;1

习题六

11累加和TOTAL=83

12循环统计X中0的个数

13

(1)将BB1:

RCLAL,1改为BB1:

ROLAL,1

(2)将BB2:

CMP[BX],’T’

LOOPNEBB2改为:

DECBXBB2:

INCBXCMP[BX],’T’LOOPNEBB2

15计算Y=1×2+3×4+5×6+7×8+9×10的程序段答案:

MOVAL,1MOVBL,2MOVDX,0MOVCX,5AA1:

MULBLADDDX,AXINCBLMOVAL,BLINCBLLOOPAA1

16写程序段。

查找CATT表中的字符”@”,找到后将SIGN单元置1,否则SIGN单元置0。

cattdb'asd@ddd'

signdb

……

movax,extra

moves,ax

movsign,0

moval,'@'

leadi,catt

cld

movcx,7

repnzscasb

jcxznee

movsign,1

nee:

movah,4ch

int21h

17写程序段。

在长度为N的字数组VALUE中统计负数的个数并保存到AX中。

valuedw2,-4,-5,3,6,6,-8nequ($-value)/2;元素个数……start:

movax,datamovds,axmovcx,nmovbx,0movax,0rept1:

movsi,value[bx];取出元素cmpsi,0jgelet1;≥0转let1incax;为负数,ax加1let1:

addbx,2looprept1

18从键盘输入一个数字,在屏幕上显示出以该数字开始10个数字串。

CODESEGMENT

ASSUMECS:

CODE

START:

MOVAH,1

INT21H

MOVCX,10

MOVBL,ALREPT1:

CMPBL,'9'JLENEXTSUBBL,10NEXT:

MOVDL,BLMOVAH,2INT21HINCBLLOOPREPT1MOVAH,4CHINT21HCODEENDSENDSTART

19

datasegmentbunch1db'stadent'bunch2db'studEnt'dataendscodesegmentassumecs:

code,ds:

data,es:

datastart:

movax,datamovds,axmoves,axleasi,bunch1leadi,bunch2movbx,0;bh=相同的个数,bl=不同的个数movcx,7let1:

moval,[si]cmpal,[di];两字符比较jzequl;相同转equlincbl;不同bl加1jmpout1equl:

incbhout1:

incsiincdilooplet1movdl,'n';显示'n',代表不同movah,2hint21haddbl,30h;加上ASCII码movdl,bl;显示不同的个数int21hmovdl,'e';显示'e',代表相同int21haddbh,30hmovdl,bh;显示相同的个数int21hmovah,4chint21hcodeendsendstart

21

DATASEGMENT

STRDB‘SDABFGH0’DATAENDSCODESEGMENTASSUMECS:

CODE,DS:

DATASTART:

MOVAX,DATAMOVDS,AXLEADI,STRSPACE:

MOVCX,10MOVAL,[DI]CMPAL,0JEOUTCMPAL,20HJEDELETEJMPEXITSUBCX,DIMOVSI,DIDELETE:

MOVBL,[SI+1]MOV[SI],BLINCSILOOPDELETEEXIT:

JMPSPACEOUT:

MOVAH,4CHINT21HCODEENDSENDSTART

23设计思路:

(1)用EQU伪指令获得需转换的十进制数的个数;

(2)用双重循环。

外循环控制个数,用x作为中间变量;(3)内循环将一个3位十进制数去掉ASCII码后按位数扩大10倍再相加,保存后即存储为二进制数;(4)分两个数组保存ASCII码表示的十进制数和转换后的二进制数。

程序如下:

;将内存中用ASCII码表示的100以内的十进制数转变为二进制数

datasegment

score1db36h,37h,20h,31h,30h,30h,38h,35h,20h,31h,30h,30h;即67,100,85,100

xdw

nequ3;三位数

numequ(x-score1)/n;十进制数个数

score2dwnumdup(0);保存转换后的二进制数

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movcx,num

movsi,-2

movbx,0

rept1:

pushcx;保存外循环次数

movcx,n

rept2:

moval,score1[bx];从score1取数

cmpal,30h;判断是否0-9

jlexit

cmpal,39h

jgexit

andax,000fh;去掉ASCII码

xchgax,x

movdx,10;将ax中前一次形成的数扩大10倍

muldx

xchgax,x

addx,ax;相加后保存到x

exit:

incbx;取下一位数

looprept2

popcx;弹出外循环次数

addsi,2

movax,x

movscore2[si],ax;转换后的数据保存到score2

movx,0

looprept1

movah,4ch

int21h

codeends

endstart

习题七

12功能:

两个字节数相加。

X和BL相加保存到Y。

13功能:

键盘输入的字符保存到KEY单元中,直到按回车为止。

14功能:

将X单元中的十六进制3AH变为十进制入栈保存,AH中为余数。

先将0008H入栈,再将0005H入栈,结果为58。

16

PUSHAXPUSHBXMOVBX,0LET1:

MOVAH,1INT21HCMPAL,0DH;输入回车退出JZEXITMOVBUFFER[BX],AL;保存到BUFFERINCBXJMPLET1EXIT:

POPBXPOPAXRETKEY_INENDP

17

KEY_IN_DECPROCPUSHAXPUSHBXMOVX,0MOVBX,0MOVSI,0LET1:

MOVAH,1INT21HCMPAL,0DH;输入回车退出JZEXITMOVBUFFER[SI],AL;保存到BUFFERINCSIJMPLET1EXIT:

MOVCX,SI;位数放在CXMOVSI,0LET2:

MOVAL,BUFFER[SI]SUBAL,30HMOVAH,

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

当前位置:首页 > 经管营销 > 销售营销

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2