汇编复习材料Word文件下载.docx

上传人:b****5 文档编号:18617507 上传时间:2022-12-29 格式:DOCX 页数:14 大小:45.14KB
下载 相关 举报
汇编复习材料Word文件下载.docx_第1页
第1页 / 共14页
汇编复习材料Word文件下载.docx_第2页
第2页 / 共14页
汇编复习材料Word文件下载.docx_第3页
第3页 / 共14页
汇编复习材料Word文件下载.docx_第4页
第4页 / 共14页
汇编复习材料Word文件下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

汇编复习材料Word文件下载.docx

《汇编复习材料Word文件下载.docx》由会员分享,可在线阅读,更多相关《汇编复习材料Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。

汇编复习材料Word文件下载.docx

由于80x86在存放字时,遵循低位字节存入低地址、高位字节存入高地址的原则,故

30022H和30024H字节单元的内容分别为0ABH和0EFH,30021H和30022H字单元的内容分别为0AB34H和0CDABH。

2.4在实模式下,段地址和偏移地址为3017:

000A的存储单元的物理地址是什么?

如果段地址和偏移地址3015:

002A和3010:

007A呢?

由于

3017H*16+000AH=3017AH,

3015H*16+002AH=3017AH,

3010H*16+007AH=3017AH,

故在实模式下,段地址和偏移地址为3017:

000A的物理地址为3017AH,如果段地址和偏移地址为3015:

002A和3010:

007A,其物理地址仍为3017AH。

3.1给定(BH)=637DH,(SI)=2A9BH,位移量D=7237H,试确定在以下各种寻址方式下的有效地址是什么?

(1)立即寻址

(2)直接寻址

(3)使用BX的寄存器寻址

(4)使用BX的间接寻址

(5)使用BX的寄存器相对寻址

(6)基址变址寻址

(7)相对基址变址寻址

(1)无;

(2)7237H;

(3)无;

(4)637DH;

(5)637DH+7237H=0D5B4H;

(6)637DH+2A9BH=8E18H;

(7)637DH+2A9BH+7237H=004FH

3.3写出把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令。

要求使用以下几种寻址方式:

(1)寄存器间接寻址

(2)寄存器相对寻址

(3)基址变址寻址

(1)leabx,BLOCK+10

Movdx,[bx]

(2)movbx,10

Movdx,BLOCK[bx]

(3)leabx,BLOCK

Movsi,10

Movdx,[bx+si]

3.4现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(21200)=2AH,(21201)=4CH,(21202)=B7H,(21203)=65H,试说明下列各条指令执行完后AX寄存器的内容

(1)MOVAX,1200HAX=1200H

(2)MOVAX,BXAX=0100H

(3)MOVAX,[1200H]AX=4C2AH

(4)MOVAX,[BX]AX=3412H

(5)MOVAX,1100[BX]AX=4C2AH

(6)MOVAX,[BX][SI]AX=7856H

(7)MOVAX,1100[BX][SI]AX=65b7H

3.9在ARRAY数组中依次存储了七个字数据,紧接着是名为ZERO的字单元,表如下:

ARRAYDW23,26,2,100,32000,54,0

ZERODW?

(1)如果BX包含数组ARRAY的初始地址,请编写指令将数据0传送给ZERO单元

(2)如果BX包含数据0在数组中的位移量,请编写指令将数据0传送给ZERO单元

(1)movAX,[BX+12]

MovZERO,AX

(2)movAX,ARRAY[BX]

3.13已知堆栈段寄存器SS的内容是0FFA0H,堆栈指针寄存器SP的内容是00B0H,先执行两条把8057H和0F79H分别进栈的PUSH指令,在执行一条POP指令。

是画出堆栈区和SP的内容变化过程示意图(标出存储单元的物理地址)

3.23假设(BX)=0E3H,变量VALUE中存放的内容为79H,确定下列各条指令单独执行后的结果。

(1)XORBX,VALUEBX=9AH

(2)ANDBX,VALUEBX=61H

(3)ORBX,VALUEBX=0FBH

(4)XORBX,0FFHBX=1CH

(5)ANDBX,0BX=0H

(6)TESTBX,01HBX不变,ZF=0

3.25试用位移指令把十进制数+53和-49分别乘以2.它们应该用什么指令?

得到的结果是什么?

如果除以2呢?

答:

用SHL指令,得到的结果分别是6AH和9EH,即真值为106和-98。

如果除以2用SAL指令,得到的结果分别是1AH和0E7H,即真值为26和-25。

3.27

(1)DX=5CH

(2)DX=17H

(5)DX=2017H

(8)DX=05CCH

3.34书P112

(2)转向L1

(4)转向L3

3.36书P113

比较2p和q,如果2p>

q,返回DOS(AX=1);

否则返回DOS(AX=2)。

4.5画图说明下列语句所分配的存储空间及初始化的数据值

(1)BYTE_VARDB’BYTE’,12,-12H,3DUP(0,?

2DUP(1,2),?

(2)WORD_VARDW5DUP(0,1,2),?

-5,’BY’,’TE’,256H

BYTE_VAR

42H

59H

54H

45H

0CH

EEH

00H

?

01H

02H

WORD_VAR

0FBH

0FFH

56H

5.4试编写一程序,要求比较两个字符串STRING1和STRING2所含的字符是否相同,若相同现实’MATCH’,若不相同显示’N0MATCH’。

STACK1SEGMENTSTACK;

定义堆栈段

DB100DUP(?

);

堆栈段大小为100字节

STACK1ENDS

DATASEGMENT;

定义数据段

STRING1DB'

abcde$'

;

假定字符串以$结束

STRING2DB'

acedefgh$'

strmatchDB'

MATCH$'

strnmatchDB'

NOMATCH$'

DATAENDS

CODESEGMENT;

定义代码段

ASSUMECS:

CODE,DS:

DATA

MAINPROCFAR;

定义主函数

PUSHDS;

压断点(段地址和偏移地址)到堆栈

MOVAX,0

PUSHAX

MOVAX,DATA;

设DS为DATA段的段地址

MOVDS,AX

MOVSI,offsetSTRING1;

把字符串STRING1的起始地址给SI

MOVDI,offsetSTRING2;

把字符串STRING1的起始地址给DI

addr1:

MOVal,[SI]

cmpal,[di]

jnznomatch;

两个字符串不匹配

cmpal,'

$'

jzmatch;

两个字符串匹配

incsi

incdi

jmpaddr1

match:

MOVAH,9

LEADX,strmatch

INT21H;

输出"

MATCH"

jmpexit

nomatch:

LEADX,strnmatch

NOMATCH"

exit:

RET;

返回操作系统

MAINENDP

CODEENDS

ENDMAIN;

程序入口为MAIN

5.19已知数组A包含15个互不相等的整数,数组B包含20个互不相等的整数,试编一程序,把既在A中又在B中出现的整数存放于数组C中。

DATASEGMENT;

ADW2,3,5,4,7,9,56,45,67,789,22,33,44,55,66;

定义A数组

BDW3,5,4,13,9,25,45,43,789,22,33,44,73,66,2,98,97,96,123,134;

定义B数组

CDW15dup(?

存储结果

CODESEGMENT;

MOVSI,offsetA;

把数组A起始地址给SI

MOVDI,offsetC;

把数组C起始地址给DI

MOVCX,15;

把数组A元素个数给CX

cont1:

MOVAX,[SI];

从数组A中取出一个数

MOVDX,20;

把数组B元素个数给CX

MOVBX,offsetB;

把数组B起始地址给BX

cont2:

cmpAX,[BX];

判断是否和数组B中的一个数相等

jzbothexist;

同时在两个数组中

incBX

decDX

jnzcont2

jmpcont3

bothexist:

MOV[DI],AX

incDI

cont3:

incSI

incSI

loopcont1

RET;

 

5.22从键盘输入一系列字符(以回车符结束),并按字母、数字及其他字符分类计数,最后显示出这三类的计数结果。

MDW?

定义变量用来存放循环求十进制数各个位时的除数

RDW?

定义变量用来存放循环求十进制数各个位时的余数

LETTERDW0;

定义变量用来存放字母字符个数,初始化为0

DIGITDW0;

定义变量用来存放数字字符个数,初始化为0

OTHERDW0;

定义变量用来存放其他字符个数,初始化为0

MOVAX,DATA

MOVAH,1

int21H;

输入一个字符

cmpal,0dH

jzdisplay;

若遇到回车则输入结束

0'

判断是否为数字字符

jbnodigit

9'

janodigit

incDIGIT;

数字字符个数加1

jmpcont1

nodigit:

cmpal,'

A'

判断是否为大写字母

jbnodxletter

Z'

janodxletter

incLETTER;

字母字符个数加1

nodxletter:

a'

判断是否为小写字母

jbnoletter

z'

janoletter

jmpcont1

noletter:

incOTHER;

其他字符个数加1

display:

callCR_DISP;

输出回车

movBX,DIGIT

callBIN2DEC;

输出数字字符个数

movBX,LETTER

输出字母字符个数

movBX,OTHER

输出其他字符个数

;

子程序bin2dec完成将2进制数以十进制形式输出

输入参数:

BX,待输出的2进制数放在其中

BIN2DECPROC

PUSHDX

MOVM,10000;

循环初始状态

AGAIN:

MOVAX,BX

MOVDX,0

DIVM;

n/m:

商在ax(al)中,余数在dx中

MOVR,DX;

保存余数

MOVAH,2

MOVDL,AL

ADDDL,30H

输出商

MOVBX,R;

n=n%m

MOVAX,M

MOVM,10

DIVM

MOVM,AX;

m=m/10

CMPM,0

JNZAGAIN;

判断是否结束循环

MOVDL,'

d'

输出十进制数后缀'

CALLCR_DISP;

调用子程序输出回车换行

POPDX

POPAX

RET

BIN2DECENDP

CR_DISPPROCNEAR;

子程序CR_Disp用于输出回车换行

MOVDL,0AH

输出换行

MOVDL,0DH

CR_DISPENDP

ENDMAIN

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

当前位置:首页 > 小学教育 > 其它课程

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

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