汇编语言复习知识点郑晓薇版.docx
- 文档编号:28680856
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:29
- 大小:48.60KB
汇编语言复习知识点郑晓薇版.docx
《汇编语言复习知识点郑晓薇版.docx》由会员分享,可在线阅读,更多相关《汇编语言复习知识点郑晓薇版.docx(29页珍藏版)》请在冰豆网上搜索。
汇编语言复习知识点郑晓薇版
1.9 写出下列算式的二进制运算结果,标志位CF、SF、ZF、OF分别是什么值?
(1)56+63
(2)83-45(3)-74+29(4)-92-37
答案:
(1)56+63=01110111B,CF=0,SF=0,ZF=0,OF=0
(2)83-45=00100110B,CF=0,SF=0,ZF=0,OF=0
(3)-74+29=11010011B,CF=0,SF=1,ZF=0,OF=0
(4)-92-37=01111111B,CF=1,SF=0,ZF=0,OF=1
2.13 有一个32K字节的存储区,首地址是3302:
5AC8H,写出其首单元和末单元的物理地址。
答案:
首单元的物理地址=38AE8H,末单元的物理地址=38AE8H+7FFFH=40AE7H
2.15 存储单元地址和内容表示如下,请画出存储单元存放形式。
(1)(1280A)=3456H
(2)(20021H)=4DH(3)(33450H)=37A520D1H
2.16 根据逻辑地址计算出物理地址,并解释逻辑地址与物理地址的对应关系。
(1)2389:
3DE9H
(2)1230:
EC92H(3)14D9:
C202H
答案:
(1)物理地址=27679H
(2)物理地址=20F92H(3)物理地址=20F92H
(2)和(3)的物理地址是一样的。
说明逻辑地址不唯一,多个逻辑地址可对应到同一个物理单元上。
2.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
3.2 分别写出与数据有关的7种寻址方式并举例说明。
3.3 已知(BX)=1290H,(SI)=348AH,(DI)=2976H,(BP)=6756H,(DS)=2E92H,(ES)=4D82H,(SS)=2030H,请指出下列指令的寻址方式,并求出有效地址EA和物理地址:
MOVAX,BX
MOVAX,1290H
MOVAX,[BX]
MOVAX,DS:
[1290H]
MOVAX,[BP]
MOV[DI][BX],AX
MOVES:
[SI],AX
查看正确答案
MOVAX,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,物理地址=32526H
MOVES:
[SI],AX寄存器间接寻址,EA=348AH,物理地址=50CAAH
3.7 请指出下列指令的错误:
MOVAX,[CX]
MOVAL,1200H
MOVAL,BX
MOV[SI][DI],AX
MOVES:
[DX],CX
MOV[AX],VALUE
MOVCOUNT,[SI]
答案:
MOVAX,[CX]错。
CX不能为间址寄存器
MOVAL,1200H错。
立即数超出8位寄存器范围
MOVAL,BX错。
两个操作数不匹配
MOV[SI][DI],AX错。
两个变址寄存器不能在一起
MOVES:
[DX],CX错。
DX不能为间址寄存器
MOV[AX],VALUE错。
AX不能为间址寄存器
MOVCOUNT,[SI]错。
两个操作数不能都是存储单元
3.9 写出用下列寻址方式将存储单元X中的第3个字取出,AX与其相加再放入Y单元的指令序列。
(1)直接寻址
(2)寄存器相对寻址(3)基址变址
答案
(1)ADDAX,[X+4]
MOVY,AX
(2)MOVBX,4
ADDAX,X[BX]
MOVY,AX
(3)MOVBX,4
MOVSI,OFFSETX
ADDAX,[BX+SI]
MOVY,AX
4.9 解释下列伪指令的作用:
(1)ASSUMECS:
CODE,DS:
DATA
(2)ENDSTART
(3)VALUEDW12,35,-6(4)STRINGDB‘INPUT:
’
(5)MESSDB5DUP(?
)(6)XXDD12345678H
(7)ORG0320H(8)CONTEQU2*3.14
4.10 根据题目,写出相关伪指令:
(1)定义数据段DATA,并在数据段中定义两个字单元X、Y,初始值都是0
(2)定义一个字符串SRING,保存’Computer’
(3)定义有100个字节单元的COUNT数组,初始值均为空
(4)用赋值伪指令定义PI为3.14
(5)用类型操作符LABEL将VALUE单元定义为字节型
查看正确答案
(1)DATASEGMENT
XDW0
YDW0
DATAENDS
(2)STRINGDB’Computer’
(3)COUNTDB100DUP(?
)
(4)PIEQU3.14
(5)VALUELABELBYTE
4.11 下列伪指令有错吗?
如果有错,请指出错误原因:
(1)X1DB35H,0,-80
(2)X2DB35,260,-1(3)X3DB1234H
(4)X4DW100(5)X5DW100(?
)(6)X6DD‘AB’
查看正确答案
(1)对。
(2)错。
260超出了字节范围。
(3)错。
X3是字节型,1234H是字型,不匹配。
(4)对。
(5)错。
缺少DUP。
(6)对。
4.12 写出下列指令的执行结果:
TABLEDB3,33,33H
(1)MOVAL,TABLE
(2)MOVAX,WORDPTRTABLE
(3)MOVDX,OFFSETTABLE
(4)MOVCL,TABLE+2
(5)MOVBX,SEGTABLE
(6)MOVBX,TYPETABLE
(7)LEADX,TABLE
查看正确答案
(1)AL=3。
(2)AX=2103H。
(3)DX=TABLE的偏移地址。
(4)CL=33H
(5)BX=TABLE的段地址。
(6)BX=1。
(7)DX=TABLE的偏移地址。
4.24 编程序。
将键盘输入的小写字母变为大写字母显示在屏幕上。
查看正确答案
.modelsmall
.code
start:
movah,1;键盘输入
int21h
subal,20h;变为大写
movdl,al
movah,2
int21h
movah,4ch
int21h
endstart
4.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(号单元开始)
movch,0
movbx,ax;地址保存到bx
movsi,0
let1:
moval,x[bx];取出平方根数字
movy[si],al;存入y
incsi
incbx
looplet1;循环取出5次
movah,4ch
int21h
codeends
endstart
4.27编写查表程序。
建立一个班级姓名表,给出学号,可显示出其姓名。
.modelsmall
.data
x1db'zhangyan$';姓名为10个字符宽度
x2db'lili$'
x3db'wanglan$'
x4db'zhaoxue$'
x5db'lijiang$'
udb3;要查的学号
.code
start:
movax,@data
movds,ax
moval,u;给出学号
movcl,10
mulcl;u*10=30(号单元开始)
movah,0
movdx,ax;地址保存到dx
movah,9;9号功能显示字符串
int21h
movah,4ch
int21h
endstart
无符号数比较转移指令包括4种指令:
JB低于则转移(A<B)
测试条件:
CF=1且ZF=0
JBE低于等于则转移(A≤B)
测试条件:
CF=1或ZF=1
JA高于则转移(A>B)
测试条件:
CF=0且ZF=0
JAE高于等于则转移(A≥B)
测试条件:
CF=0或ZF=1
带符号数的最高位为符号位,因此带符号数的数值与无符号数不一样
JL小于则转移(A<B)
测试条件:
SF≠OF且ZF=0
JLE小于等于则转移(A≤B)
测试条件:
SF≠OF或ZF=1
JG大于则转移(A>B)
测试条件:
SF=OF且ZF=0
JGE大于等于则转移(A≥B)
测试条件:
SF=OF或ZF=1
SAL算术左移指令
SAR算术右移指令
SHL逻辑左移指令
SHR逻辑右移指令
ROL循环左移指令
ROR循环右移指令
RCL带进位的循环左移指令
RCR带进位的循环右移指令
5.14 指出下列指令的错误所在。
(1) AND[SI],3
(2) SUBDS,AX
(3) PUSH5
(4) OR80H,AL
(5) CMP[BX],TABLE
(6) ROLAL,3
查看正确答案
(1)目的操作数是存储单元时,要用PTR伪操作指出单元的属性
(2)DS段寄存器使用非法(3)立即数使用非法(4)目的操作数不允许是立即数(5)两个操作数不允许都是存储单元(6)移位次数超过1要用CL表示。
5.17 简述操作系统对可执行程序的加载和执行过程。
【程序的加载】操作系统进行了如下操作:
(1)将用户程序调入内存
(2)建立256字节的程序段前缀PSP区
(3)用DS和ES寄存器保存PSP区的段地址
(4)在PSP后面定义代码段,将程序代码紧接着PSP存放
(5)程序代码所在的段地址放入CS寄存器,偏移地址0000H放入IP寄存器
(6)如果用户程序定义了数据段,则在PSP和代码段之间预留部分空间
(7)设置堆栈区的段地址SS寄存器和堆栈指针
(8)将控制权交给用户程序,开始执行。
5.27 分支程序设计。
完成如下公式的计算,请写出程序。
(X+3)/2 X>0
Y= 0 X=0
X×4 X<0
查看正确答案
分支程序设计。
完成如下公式的计算,请写出程序。
(X+3)/2 X>0
Y=0 X=0
X×4 X<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
5.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
6.14 源串STRG1和目的串STRG2分别放在数据段和附加段中,请写出含有各种段定义的程序段,完成将STRG1传送到STRG2的功能。
DATASSEGMENT
STRG1DB'NEUQCOMPUTERSCIENCEANDTECHNOLOGY'
STRGDB?
DATASENDS
EXTRASSEGMENT
STRG2DB30DUP(?
)
EXTRASENDS
STACKSSEGMENT
;此处输入堆栈段代码
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS,ES:
EXTRAS
START:
MOVAX,DATAS
MOVDS,AX
MOVAX,EXTRAS
MOVES,AX
LEASI,STRG1
LEADI,STRG2
MOVCX,STRG-STRG1
CLD
REPMOVSB
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
6.17写程序段。
在长度为N的字数组VALUE中统计负数的个数并保存到AX中。
查看正确答案
写程序段。
在长度为N的字数组VALUE中统计负数的个数并保存到AX中。
DATASSEGMENT
valuedb1,-2,3,5,-8,-3,-2,-7
Ndb?
DATASENDS
STACKSSEGMENT
;此处输入堆栈段代码
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS
MOVDS,AX
movcx,N-value
leabx,value
movax,0
s:
cmpbyteptr[bx],0
jnst
incax
t:
incbx
loops
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
6.20 编程。
在FOUND字数组中找出最小数存入MIN单元。
DATASSEGMENT
FOUNDdb1,3,5,7,9,-1,-3,-5,0,9
MINdb?
DATASENDS
STACKSSEGMENT
;此处输入堆栈段代码
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS
MOVDS,AX
leabx,FOUND
movcx,min-found
let0:
cmp
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
【冒泡算法】的主要思想是从第一个元素开始,依次对两个相邻的元素进行比较,如果第一个元素比第二个大,则两数交换位置,第一遍N-1次比较之后,最大的数排在最后;再做第二遍N-2次比较,比较出第二大的数……;以此类推,最多进行N-1遍比较,所有的数按从小到大升序排序。
将字数组PART按升序排序。
设计思路:
(1)用两条LOOP指令实现双重循环时,对CX寄存器有冲突。
采用PUSHCX指令将外循环的CX值入栈保存,内循环的LOOP结束后,再将外循环的CX恢复;
(2)用相对寄存器寻址取出两数进行比较。
程序如下:
;6-5.asm将字数组part按升序排序。
datasegment
partdw15,32,6,-27,8
signdw?
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
movcx,sign-part;数组长度
shrcx,1;元素个数
deccx
loop1:
pushcx;保存外循环次数
movbx,0
loop2:
movax,part[bx]
cmpax,part[bx+2]
jlenext;升序
xchgax,part[bx+2];交换
movpart[bx],ax
next:
addbx,2
looploop2
popcx;恢复外循环次数
looploop1
movah,4ch
int21h
codeends
endstart
7.18 写出求数组元素累加和的子程序。
datasegment
arraydb12h,32h,34h,45h,21h,23h
countequ$-array
sumdb?
dataends
codesegment
assumeds:
data,cs:
code
start:
movax,data
movds,ax
callqiuhe
movax,4c00h
int21h
qiuheproc
movax,0
leasi,array
movcx,count
next:
addal,[si]
incsi
loopnext
movsum,al
ret
qiuheendp
codeends
endstart
7.19写出子程序。
查十进制数的ASCII码表,对AL中的BCD码显示出十进制数。
DATA SEGMENT ;定义源数据段
STRING DB 'Input:
','$'
MSR DB 6,?
6DUP(?
) ;数据段MSR用于接收从键盘输入的五位十进制数
DATA ENDS
CODE SEGMENT ;定义代码段
ASSUME CS:
CODE,DS:
DATA
START:
MOV AX,DATA
MOV DS,AX ; 装载数据段寄存器
LEA DX,STRING
MOV AH,09H
INT 21H
MOV DX,OFFSETMSR
MOV AH,0AH
INT 21H
MOV CL,[MSR+1] ;CL中保存实际输入的数据的位数,用于控制循环执行的次数
MOV SI,0002H
MOV BX,OFFSETMSR
NEXT1:
MOV AL,[BX+SI] ;开始传输数据
CMP AL,40H
JNC LK1 ;大于等于40H则表明输入的不是数字符,跳到LK1输入F
CLC
CMP AL,30
JC LK1 ;小于30H则表明输入的不是数字字符,到LK1输出字符F
SUB AL,30H
MOV CH,0
PUSH CX
MOV CL,4
MOV DH,AL
SHL DH,CL
NEXT2:
ROL DH,1
MOV DL,DH
AND DL,01H
ADD DL,30H
MOV AH,02H
INT 21H
DEC CL
JNZ NEXT2
POP CX
INC SI
DEC CL
JNZ NEXT1
LK1:
JZ LK2
MOV DL,46H ;输出字符F
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 复习 知识点 郑晓薇版
![提示](https://static.bdocx.com/images/bang_tan.gif)