汇编语言程序设计复习.docx
- 文档编号:8895150
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:12
- 大小:20.63KB
汇编语言程序设计复习.docx
《汇编语言程序设计复习.docx》由会员分享,可在线阅读,更多相关《汇编语言程序设计复习.docx(12页珍藏版)》请在冰豆网上搜索。
汇编语言程序设计复习
知识点
第一章基础知识
(1)正负数的补码表示,掌握计算机中数和字符的表示;
eg.假设机器字长为8位,[+3]补=B,[-3]补=H。
十六进制数0FFF8H表示的十进制正数为 65528D ,表示的十进制负数为 -8D 。
8位二进制数被看成是带符号补码整数时,其最小值是-128,最大值是127。
第二章80x86计算机组织
(1)中央处理机CPU的组成和80x86寄存器组,重点:
专用寄存器,段寄存器
eg:
IP寄存器中保存的是?
代码段中的偏移地址FLAGS标志寄存器中共有几位条件状态位6位,有几位控制状态位2位,标志寄存器分为哪2类?
陷阱标志,中断标志。
(2)存储单元的地址和内容每一个字节单元给以一个唯一的存储器地址,称为物理地址;一个存储单元中存放的信息称为该存储单元的内容。
存储器地址的分段,(低位字节存放)低地址,(高位字节存放)高地址;实模式下逻辑地址、选择器和偏移地址;物理地址的表示段基地址加上偏移地址。
eg.如果SS=6000H,说明堆栈段起始物理地址是_____60000H___。
已知字节(00018H)=14H,字节(00017H)=20H,则字(00017H)为__1420H______。
如果(SI)=0088H,(DS)=5570H,对于物理地址为55788H的内存字单元,其内容为0235H,对于物理地址为5578AH的内存字单元,其内容为0E60H,那么执行指令LDSSI,[SI]以后,(SI)=0235H,(DS)=0E60H.
第三章80x86的指令系统和寻址方式
与数据有关的寻址方式(立即寻址方式,寄存器寻址方式,直接寻址方式,寄存器间接寻址方式,寄存器相对寻址方式,基址变址寻址方式,相对基址变址寻址方式)和与转移地址有关的寻址方式(段内直接寻址,段内间接寻址,段间直接寻址,段间间接寻址)。
数据传送指令(通用数据传送指令、累加器专用传送指令、输入输出指令)、算术指令(加法指令、减法指令(*加减指令对4个标志位的影响[of,cf,sf,zf])、乘法指令(*乘法指令的要求:
目的操作数必须是累加器)、除法指令(*被除数在累加器中,除法指令执行完以后,商和余数在?
))、逻辑指令(逻辑运算指令(*XOR,AND,OR,TEST指令及指令执行后对标志位的影响)、移位指令)、串处理指令(与REP相配合工作的MOVS、STOS、LODS指令,与REPE/REPZ和REPNE/REPNZ联合工作的CMPS、SCAS指令)、控制转移指令(无条件转移指令、条件转移指令、循环指令、子程序调用指令、中断)。
eg.【习题3.8】假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据段中变量名VAL的偏移地址为0050H,试指出下列源操作数字段的寻址方式是什么?
其物理地址值是多少?
(1)MOVAX,0ABH
(2)MOVAX,BX
(3)MOVAX,[100H](4)MOVAX,VAL
(5)MOVAX,[BX](6)MOVAX,ES:
[BX]
(7)MOVAX,[BP](8)MOVAX,[SI]
(9)MOVAX,[BX+10](10)MOVAX,VAL[BX]
(11)MOVAX,[BX][SI](12)MOVAX,VAL[BX][SI]
假定(DS)=1000H,(SS)=2000H,(SI)=3000H,(BX)=0100H,(BP)=0200H,数据段中变量名为OVAR的偏移地址值为0050H,请指出下列源操作数的寻址方式是什么?
其物理地址值是多少?
1.MOVDX,[1000H]
2.MOBDX,[BX]
3.MOVDX,OVAR[BP]
4.MOVDX,[BX+SI]
5.MOVDX,OVAR[BX][SI]
如果JMP指令采用段间间接寻址,那么转移地址存放在4个相邻字节单元中,其中前两个字节存放的是偏移地址,而后两个字节存放的是段地址。
设SP=4AH,执行段内返回指令RET4后,SP的值是 50H 。
重复前缀指令REP的重复次数由计数寄存器CountReg决定。
在串操作指令前使用重复前缀指令REPE,终止串的重复操作条件是
(CountReg)=0或ZF=0
条件转移指令的转移范围?
(只能做段内的短转移)
转移指令JMPNEARPTRPROCA的转移范围是8000H~7FFFH 。
当标志位CF=1时表示无符号数运算产生溢出,而当标志位OF=1是表示带符号数运算产生溢出。
计算机系统通过 和外部设备通信。
循环控制指令LoopNZ/LoopNE控制循环继续执行的条件是_ZF=0且(CountReg)不等于0_______。
DOS系统功能调用方式为:
(1)设置入口参数;
(2)中断程序编号送AH寄存器后执行INT21H。
(教材Page320,page335)
阅读下面的程序片段,并分析执行结果。
MOVAX,723AH
MOVBX,0C86BH
SUBAL,BL
SBBAH,BH
XORAL,01H
ADCAX,0
执行该程序片段后:
(AX)=0A9CEH,CF=0,OF=0。
第四章汇编语言程序格式
伪操作:
数据定义及存储器分配伪操作,表达式赋值伪操作EQU,段定义伪操作、程序开始和结束伪操作、对准伪操作、基数控制伪操作。
汇编语言程序格式:
汇编语言源程序中的每个语句的组成格式:
名字项、操作项(包括?
)、操作数项和注释项
eg.1.在某数据段内定义变量
BUFFERDB30DUP(20)
表达式TYPEBUFFER的值为1。
2.BUFlDB3DUP(0,2DUP(1,2),3)
COUNTEQU$-BUFl
变量COUNT的值是18。
3.DATASEGMENT
DB2EHDUP(0)
VAR1DB12H,34H
VAR2DB10HDUP(O)
ADR1DWVAR1,VAR2
DATAENDS
为使ADR1+2字存储单元中内容为0030H,横线上应选用的语句是_ORG$+30H____。
4.BUFDW4,6,$+2,若汇编时BUF分配的偏移地址是0042H,则汇编后BUF数组中第三个字的值是0048H。
5.设某数据段:
DATASEGMENT
ORG20H
NUM1=8
NUM2=NUM1+10H
DA1DB‘COMPUTER’
DB0AH,0DH
COUNTEQU$-DA1
DA2DW‘CO’,’MP’,’UT,’ER’
DATAENDS
请回答:
(1)DA1的偏移地址是:
0020H。
(2)COUNT的值是10。
(3)DA2+5字节单元的内容是‘U’。
6.执行下列指令序列后,AX寄存器中的内容是什么?
TABLEDW10,20,30,40,50
ENTRYDW3
……
MOVBX,OFFSETTABLE
ADDBX,ENTRY
MOVAX,[BX]
7.下面指令执行后,变量DAB中的内容是____0F5H____。
DAWDW2A05H
DABDB0FAH
:
MOVAL,BYTEPRTDAW
SUBDAB,AL
第五章循环与分支程序设计
循环程序结构,分支程序结构
eg.BEG为起始地址的存储区域中存放有100个字节数据,现将其首、尾颠倒过来,重新排放这100个字节数据。
请在空行处各填上一条指令完善该程序。
MOVCX,31H
LEASI,BEG
MOVDI,SI
ADDDI,99
DON:
MOVAL,[SI]
XCHGAL,[DI]
MOV[SI],AL
INCSI
DECDI
LOOPDON
阅读如下程序段:
ADRRDBXXH,XXH,……,XXH
NUMEQU$-ADRR
RETTDB?
…
MOVCX,NUM
MOVBX,-1
DON:
INCBX
CMPADRR[BX],0
LOOPZDON
JNZNEXT
MOVBL,OFFH
NEXT:
MOVRETT,BL
HLT
请回答
(1)该程序完成的功能是什么?
在以ADRR为起始地址的数组中,查找第一个非0数据
(2)程序执行后RETT字节单元中的内容是什么?
若找到则将第一个非零数据在数组中的偏移量送入RETT单元中;若无非0数据,则将0FFH送入RETT单元中。
阅读如下程序片段,回答所提出的问题,假定X1,X2,…XN为无符号数。
ORG100H
BLOKDWX1,X2,…,XN
COUNTEQU($-BLOK)/2
RESULTDW?
…
LEABX,BLOK-2
MOVCX,COUNT
XORAX,AX
GOON:
ADDBX,2
CMPAX,[BX]
JAENEXT
MOVAX,[BX]
NEXT:
LOOPGOON
MOVRESULT,AX
程序片段执行完后,RESULT字单元的内容= MAX(X1,X2,…Xn) ,
(BX)=100H+2*(COUNT-1),程序循环次数=COUNT。
下列程序片段用来分别统计ARRAY数组中奇数和偶数的个数。
请在空白处填写合适的指令。
DATASEGMENT
ARRAYDW23ABH,1570H,567,1765H,46,5210H
COUNTEQU($-ARRAY)/2
DA1DB?
DA2DB?
DATAENDS
……
LEASI,ARRAY
MOVCX,COUNT
LOP1:
MOVAX,[SI]
TEXTAX,0001H
JZLOP2
INCBL
JMPLOP3
LOP2:
INCBH
LOP3:
ADDSI,2
DECCX
JNZLOP1
MOVDA1,BL
MOVDA2,BH
下列程序片段调用单个字符显示的2号功能显示STRING中的字符串‘COMPUTER’(不显示字符‘$’)。
(调用DOS的2号功能实现)
STRINGDB‘COMPUTER’,‘$’
┇
设AX,BX中的数一个为正数,一个为负数,编写程序片段完成将正数送到PLW单元中存放。
编程实现:
TEST AX,8000H
JE K1或JZ K1
MOV PLW,BX
JMP DONE
K1:
MOV PLW,AX
DONE:
习题5.3,5.23
1.从键盘输入一个以$为结束符的字符串,统计其中的非数字字符个数。
DSEGSEGMENT
BUFFDB50DUP(‘’)
COUNTDW0
DSEGENDS
┇
BEGIN:
LEABX,BUFF
MOVCOUNT,0
INPUT:
MOVAH,01;
INT21H
MOV[BX],AL
INCBX
CMPAL,‘$’;
JNZINPUT;
LEABX,BUFF;
NEXT:
MOVCL,[BX]
INCBX
CMPCL,‘$’;
JZDISP
CMPCL,30H;
JBNEXT
CMPCL,39H;
JANEXT
INCCOUNT;
JMPNEXT
DISP:
┇;
2.试编写一程序段求出双字长数的绝对值。
双字长数在A和A+2单元中,结果存放在B和B+2单元中。
MOVAX,A
MOVDX,A+2
CMPDX,0
JNSZHENSHU;不是负数则转走
NEGDX
NEGAX
SBBDX,0
ZHENSHU:
MOVB,AX
MOVB+2,DX
INT20H
3.把0~100之间的30个数存入以GRADE为首地址的30字数组中,GRADE+i表示学号为i+1的学生的成绩。
另一个数组RANK为30个学生的名次表,其中RANK+i的内容是学号为i+1的学生的名次。
编写一程序,根据GRADE中的学生成绩,将学生名次填入RANK数组中。
(一个学生的名次等于成绩高于这个学生的人数加1。
)
DSEGSEGMENT
GRADEDW30DUP(?
);
RANKDW30DUP(?
)
DSEGENDS
;------------------------------------------------------------------
CSEGSEGMENT
MAINPROCFAR
ASSUMECS:
CSEG,DS:
DSEG
START:
PUSHDS;
SUBAX,AX
PUSHAX
MOVAX,DSEG
MOVDS,AX;
BEGIN:
MOVDI,0
MOVCX,30;
LOOP1:
PUSHCX
MOVCX,30;
MOVSI,0
MOVAX,GRADE[DI]
MOVDX,1;
LOOP2:
CMPGRADE[SI],AX;
JBEGO_ON
INCDX;
GO_ON:
ADDSI,2
LOOPLOOP2
POPCX
MOVRNAK[DI],DX;
ADDDI,2
LOOPLOOP1
RET
MAINENDP
CSEGENDS;
;----------------------------------------------------------
ENDSTAR
4.写出执行以下计算的指令序列,其中X、Y、W和Z均为存放16位带符号数单元的地址。
Z←((W-X)/5*Y)*2
MOVAX,W
SUBAX,X
CWD
MOVBX,5
IDIVBX
IMULY
SHLAX,1;((DX),(AX))*2
RCLDX,1
5.实现下列算式:
W=X+Y+36-Z。
设X、Y、Z、W均为双字长数据,各自的低十六位数和高十六位数分别存放在X、X+2、Y、Y+2、Z、Z+2的存储单元中,结果的低十六位字和高十六位字分别存放在W和W+2两个单元中。
DATASEGMENT
XDD...
YDD...
ZDD...
WDD...
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,X
ADDAX,Y
MOVBX,X+2
ADCBX,Y+2
ADDAX,36
ADCBX,0
SUBAX,Z
SBBBX,Z+2
MOVW,AX
MOVW+2,BX
CODEENDS
ENGSTART
6.试编制一源程序,统计DA1字单元中含0的个数,如统计的个数为奇数,则将进位位置1,否则进位位清0。
DATASEGMENT
DA1DW****
DATAENDS
STACK1SEGMENTPARASTACK
DB10HDUP(0)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDH,0
MOVAX,DA1
MOVCX,16
LOOP:
SHLAX,1
JCNEXT1
INCDH
NEXT1:
LOOPLOP
CLC
TESTDH,1
JZEND0
STC
END0:
MOVAH,4CH
INT21H
CODE:
ENDS
ENDSTART
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 复习