汇编期末课后整理.docx

上传人:b****4 文档编号:12104973 上传时间:2023-04-17 格式:DOCX 页数:17 大小:19.73KB
下载 相关 举报
汇编期末课后整理.docx_第1页
第1页 / 共17页
汇编期末课后整理.docx_第2页
第2页 / 共17页
汇编期末课后整理.docx_第3页
第3页 / 共17页
汇编期末课后整理.docx_第4页
第4页 / 共17页
汇编期末课后整理.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

汇编期末课后整理.docx

《汇编期末课后整理.docx》由会员分享,可在线阅读,更多相关《汇编期末课后整理.docx(17页珍藏版)》请在冰豆网上搜索。

汇编期末课后整理.docx

汇编期末课后整理

习题二

13有一个32K字节的存储区,首地址是3302:

5AC8H,写出其首单元和末单元的物理地址。

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

15存储单元地址和内容表示如下,请画出存储单元存放形式。

(1)(1280A)=3456H

(2)(20021H)=4DH(3)(33450H)=37A520D1H

16根据逻辑地址计算出物理地址,并解释逻辑地址与物理地址的对应关系。

(1)2389:

3DE9H

(2)1230:

EC92H(3)14D9:

C202H

(1)物理地址=27679H

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

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

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

17给出段地址和偏移地址如下,计算出对应的物理地址。

(CS)=54C3H,(ES)=2569H,(DS)=1200H,(SS)=4422H,

(BX)=5678H,(SP)=9945H,(IP)=0E54H,(DI)=63B1H

代码段CS:

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

SP的物理地址=4DB65H

数据段DS:

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

DI的物理地址=2BA41H

18已知堆栈区大小为512字节,栈底单元的物理地址为15230H。

将两个字入栈保存后,当前栈指针所指单元的物理地址是多少?

堆栈区中还能保存多少个数据?

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

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

习题四

21写出指令,用压缩BCD码实现下列运算:

(1)Y1=56+34

(2)Y2=128-35

(3)Y3=68+23-45

查看正确答案

(1)MOVAL,56H

MOVBL,34H

ADDAL,BL

DAA

MOVY1,AL

(2)MOVAX,128H

MOVBX,35H

SUBAX,BX

DAS

MOVY2,AL

(3)MOVAL,68H

MOVBL,23H

ADDAL,BL

MOVBL,45H

SUBAL,BL

DAS

MOVY3,AL

22写出指令,用非压缩BCD码实现下列运算:

(1)Z1=78+46

(2)Z2=95-27

(3)Z3=12×6-33

(4)Z4=(74+18)/6

查看正确答案

(1)MOVAX,0708H

MOVBX,0406H

ADDAL,BL

ADDAH,BH;不用带进位加

AAA;加法调整,含进位调整

MOVBX,AX

XCHGAH,AL;高4位调整

AAA

MOVBH,AL

MOVZ1,BX;保存十位、各位,百位在CF中

(2)MOVAX,0905H

MOVBX,0207H

SUBAL,BL

SUBAH,BH;不用带借位减

AAS;减法调整

MOVZ2,AX

(3)MOVAX,0102H

MOVBX,0006H

MULBX;乘法先不用调整

MOVBX,0303H

SUBAX,BX

AAS;减法调整

MOVZ3,AX

(4)MOVAX,0704H

MOVBX,0108H

ADDAL,BL

ADDAH,BH

AAA;加法调整

MOVBL,6

AAD;除法调整

DIVBL

MOVBH,AH;余数保存在BH

ANDAX,000FH

AAA;商调整

MOVZ4,AX;保存商

26编写程序,建立一个0~9的平方根表,查表可得某数的平方根。

查看正确答案

datasegment

xdb'0.000','1.000','1.414','1.732','2.000'

db'2.236','2.449','2.646','2.828','3.000';建立字符表

ydb5dup(?

);存放查到平方根

udb3;要查的数

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

moval,u;要查的数

movcl,5

mulcl;u*5=15(号单元开始)

movah,0

movbx,ax;地址保存到bx

movsi,0

let1:

moval,x[bx];取出平方根数字

movy[si],al;存入y

incsi

incbx

looplet1;循环取出5次

movah,4ch

int21h

codeends

endstart

29编写程序段,将AL中的数乘以6,与CL相减后再除以3;把商保存到Y单元,余数保存到Y+1单元。

查看正确答案

.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

习题五

27分支程序设计。

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

(X+3)/2X>0

Y=0X=0

X×4X<0

查看正确答案

分支程序设计。

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

(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的绝对值。

编程序实现。

查看正确答案

设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单元。

查看正确答案

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

程序如下:

DATA1SEGMENT

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

POSIDW?

NEGADW?

ZERODW?

DATA1ENDS

CODE1SEGMENT

ASSUMECS:

CODE1,DS:

DATA1

START:

MOVAX,DATA1

MOVDS,AX

MOVCX,10

LEASI,M

AGAIN:

CMPWORDPTR[SI],0

JLLOWER

JEEQUAL

INCPOSI

JMPLPP1

LOWER:

INCNEGA

JMPLPP1

EQUAL:

INCZERO

LPP1:

ADDSI,2

DECCX

JNZAGAIN

MOVAH,4CH

INT21H

CODE1ENDS

ENDSTART

31编程。

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

查看正确答案

编程。

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

程序段:

START:

MOVAX,1234H

MOVBX,AX

ANDAL,0FH;4

ANDBL,0F0H;3

ANDAH,0FH

MOVCL,AH;2

ANDBH,0F0H

MOVDL,BH;1

习题六

15写出计算Y=1×2+3×4+5×6+7×8+9×10的程序段。

查看正确答案

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

MOVAL,1

MOVBL,2

MOVDX,0

MOVCX,5

AA1:

MULBL

ADDDX,AX

INCBL

MOVAL,BL

INCBL

LOOPAA1

17写程序段。

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

查看正确答案

写程序段。

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

valuedw2,-4,-5,3,6,6,-8

nequ($-value)/2;元素个数

……

start:

movax,data

movds,ax

movcx,n

movbx,0

movax,0

rept1:

movsi,value[bx];取出元素

cmpsi,0

jgelet1;≥0转let1

incax;为负数,ax加1

let1:

addbx,2

looprept1

18编程。

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

查看正确答案

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

CODESEGMENT

ASSUMECS:

CODE

START:

MOVAH,1

INT21H

MOVCX,10

MOVBL,AL

REPT1:

CMPBL,'9'

JLENEXT

SUBBL,10

NEXT:

MOVDL,BL

MOVAH,2

INT21H

INCBL

LOOPREPT1

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

19编程。

比较两个字符串是否相同,统计并显示出相同的字符个数和不同的字符个数。

查看正确答案

datasegment

bunch1db'stadent'

bunch2db'studEnt'

dataends

codesegment

assumecs:

code,ds:

data,es:

data

start:

movax,data

movds,ax

moves,ax

leasi,bunch1

leadi,bunch2

movbx,0;bh=相同的个数,bl=不同的个数

movcx,7

let1:

moval,[si]

cmpal,[di];两字符比较

jzequl;相同转equl

incbl;不同bl加1

jmpout1

equl:

incbh

out1:

incsi

incdi

looplet1

movdl,'n';显示'n',代表不同

movah,2h

int21h

addbl,30h;加上ASCII码

movdl,bl;显示不同的个数

int21h

movdl,'e';显示'e',代表相同

int21h

addbh,30h

movdl,bh;显示相同的个数

int21h

movah,4ch

int21h

codeends

endstart

习题七

23写出对内存单元X中的补码求真值子程序,补码保存在BX中。

查看正确答案

calcuproc

pushax

pushbx

pushsi

movax,0

moval,x

andal,al

jnszz

negal

movfuhao,'-'

zz:

movsi,0

movbx,10;将ax变为十进制数真值

let1:

movdx,0

incsi;统计余数个数

idivbx

movy[si],dx;在y单元保存余数

cmpax,0

jnzlet1

popsi

popbx

popax

ret

calcuendp

28写出对AX中的二进制数按位相加子程序。

30编制一个计算数组中所有负数之和的子程序。

并利用此子程序分别计算A数组和B数组中的负数之和,结果分别放在SUM1和SUM2单元中。

查看正确答案

DATASEGMENT

ADB9,-8,-7,6,5

BDB-8,7,6,-5,4

SUM1DB?

SUM2DB?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVCX,5

MOVSI,OFFSETA

CALLLADD

MOVSUM1,BL

MOVSI,OFFSETB

CALLLADD

MOVSUM2,BL

MOVAH,4CH

INT21H

LADDPROCNEAR

PUSHCX

PUSHAX

PUSHSI

XORBL,BL

NEXT:

MOVAL,[SI]

ANDAL,AL

JNSJJJ

ADDBL,AL

JJJ:

INCSI

LOOPNEXT

POPSI

POPAX

POPCX

RET

LADDENDP

CODEENDS

ENDSTART

习题八

21定义宏。

完成两个操作数相乘,乘积在第3个操作数中。

MmulmacroA,B,C

Moval,A

Movbl,B

Mulbl

MovC,ax

23定义键盘输入一个字符的宏指令INPUT。

Inputmacro

Movah,01h

Int21h

endm

24定义显示一个字符的宏指令OUTPUT,要显示的字符用哑元DISP表示。

OutputmacroDISP

Movdl,DISP

Movah,2

Int21h

endm

25定义宏指令KEY_STR,实现从键盘输入一串字符。

key_strmacroopr1

movdx,offsetopr1

movah,10

int21h

endm

26定义宏指令DISPLAY,显示一串字符。

displaymacroopr1

leadx,opr1

movah,9

int21h

endm

27利用宏指令INPUT和OUTPUT实现将键入的大写字母变为小写显示。

查看正确答案

程序:

.modelsmall

.stack100h

.code

start:

input;键盘输入

addal,20h;大写变为小写

outputal;显示

movah,4ch

int21h

endstart

习题九

38编写读取时钟计数器的值,经过变换产生百位以内随机数的程序。

查看正确答案

程序如下:

include9-4.mac

.modelsmall

.data

letter1db'Timestart=','$'

letter2db'Timeend=','$'

letter3db'Timetotal=','$'

inputdb100,102dup(?

hourdb?

minutesdb?

secondsdb?

persecdb?

contdb0

.code

start:

movax,@data

movds,ax

clearsc;清屏

cursor2,50;置光标

movah,9

movdx,offsetletter1;显示串1

int21h

sss:

;读时间并显示

movah,2ch;CH=小时,CL=分,DH=秒,DL=百分秒

int21h

movbx,0

movbl,ch

calldisp_2_10;显示小时

displ':

';显示:

movbx,0

movbl,cl

calldisp_2_10;分

displ':

';显示:

movbx,0

movbl,dh

calldisp_2_10;秒

displ':

';显示:

movbx,0

movbl,dl

calldisp_2_10;百分秒

subch,hour;计算时间差

subcl,minutes

subdh,seconds

subdl,persec

movhour,ch;保存时间差

movminutes,cl

movseconds,dh

movpersec,dl

inccont

cmpcont,2;显示2次时间

jzout1

cursor7,10;置输入光标

movdx,offsetinput;键盘输入

movah,10

int21h

cursor3,50;置光标

;显示串2

movah,9

movdx,offsetletter2

int21h

jmpsss

out1:

cursor4,50;置光标

movah,9

movdx,offsetletter3;显示串3

int21h;显示时间差

movcx,3

movsi,offsethour

movbx,0

www:

movbl,[si];取出时、分、秒

calldisp_2_10;3次调用

displ':

';显示:

incsi

loopwww

movah,4ch

int21h

;子程序。

二-十进制数转换。

bx值用十进制显示。

disp_2_10proc

store_ss;保护现场

movax,bx;bx传参

movcx,0

movbx,10;将ax变为十进制数

let1:

movdx,0

inccx;统计余数个数

idivbx

pushdx;保存余数

cmpax,0

jnzlet1

let2:

;显示结果

popax;将余数弹入ax

addax,0030h;调整为ascii码

movdl,al

movah,2

int21h

looplet2

restore_ss;恢复现场

ret

disp_2_10

endp

endstart

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

当前位置:首页 > 成人教育 > 专升本

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

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