汇编语言.docx
- 文档编号:28566970
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:12
- 大小:21.53KB
汇编语言.docx
《汇编语言.docx》由会员分享,可在线阅读,更多相关《汇编语言.docx(12页珍藏版)》请在冰豆网上搜索。
汇编语言
汇编作业
第一章作业
1.1用降幂法和除法将下列十进制数转换为二进制数和十六进制数:
(1)369
(2)10000(3)4095(4)32767
1.2将下列二进制数转换为十六进制数和十进制数:
(1)101101
(2)10000000(3)1111111111111111(4)11111111
1.3将下列十六进制数转换为二进制数和十进制数:
(1)FA
(2)5B(3)FFFE(4)1234
1.4完成下列十六进制数的运算,并转换为十进制数进行校核:
(1)3A+B7
(2)1234+AF(3)ABCD-FE(4)7AB×6F
1.5下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。
(1)(-85)+76
(2)85+(-76)(3)85-76(4)85-(-76)(5)(-85)-76(6)-85-(-76)
1.6下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?
(1)D8
(2)FF
1.7下列各数均为用十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的数或字符的ASCII码时,它们所表示的十进制数及字符是什么?
(1)4F
(2)2B(3)73(4)59
1.8请写出下列字符串的ASCII码值。
Forexample,
Thisisanumber3692.
第二章 作业
2.1在80x86微机的输入/输出指令中,I/O端口号通常是由DX寄存器提供的,但有时也可以在指令中直接指定00~FFH的端口号。
试问可直接由指令指定的I/O端口数。
2.2有两个16位字1EE5H和2A3CH分别存放在80x86微机的存储器的000B0H和000B3H单元中,请用图表示出它们在存储器里的存放情况。
2.3在IBMPC机的存储器中存放信息如右下图所示。
试读出30022H和30024H字节单元的内容,以及30021H和30022H字单元的内容。
30020H12H
30021H34H
30022HABH
30023HCDH
30024HEFH
2.4在实模式下,段地址和偏移地址为3017:
000A的存储单元的物理地址是什么?
如果段地址和偏移地址是3015:
002A和3010:
007A呢?
2.5如果在一个程序开始执行以前(CS)=0A7F0H,(如16进制数的最高位为字母,则应在其前加一个0)(IP)=2B40H,试问该程序的第一个字的物理地址是多少?
2.6在实模式下,存储器中每一段最多可有10000H个字节。
如果用调试程序DEBUG的r命令在终端上显示出当前各寄存器的内容如下,请画出此时存储器分段的示意图,以及条件标志OF、SF、ZF、CF的值。
C>debug
-r
AX=0000BX=0000CX=0079DX=0000SP=FFEEBP=0000
SI=0000DI=0000DS=10E4ES=10F4SS=21F0CS=31FF
IP=0100NVUPDIPLNZNAPONC
2.7下列操作可使用那些寄存器?
(1)加法和减法
(2)循环计数
(3)乘法和除法
(4)保存段地址
(5)表示运算结果为0
(6)将要执行的指令地址
(7)将要从堆栈取出数据的地址
2.8那些寄存器可以用来指示存储器地址?
2.9请将下列左边的项和右边的解释联系起来:
(1)CPU A.保存当前栈顶地址的寄存器。
(2)存储器 B.指示下一条要执行的指令的地址。
(3)堆栈 C.存储程序、数据等信息的记忆装置,微机有RAM和ROM两种。
(4)IP D.以后进先出方式工作的存储空间。
(5)SP E.把汇编语言程序翻译成机器语言程序的系统程序。
(6)状态标志F.唯一代表存储空间中每个字节单元的地址。
(7)控制标志G.能被计算机直接识别的语言。
(8)段寄存器H.用指令的助记符、符号地址、标号等符号书写程序的语言。
(9)物理地址I.把若干个模块连接起来成为可执行文件的系统程序。
(10)汇编语言J.保存各逻辑段的起始地址的寄存器,8086/8088机有四个:
CS、DS、SS、ES。
(11)机器语言K.控制操作的标志,如DF位。
(12)汇编程序L.记录指令操作结果的标志,共6位:
OF、SF、ZF、AF、PF、CF。
(13)连接程序M.分析、控制并执行指令的部件,由算术逻辑部件ALU和寄存器等组成。
(14)指令 N.由汇编程序在汇编过程中执行的指令。
(15)伪指令 O.告诉CPU要执行的操作(一般还要指出操作数地址),在程序运行时执行。
第三章 作业
3.1给定(BX)=637DH,(SI)=2A9BH,位移量D=7237H,试确定在以下各种寻址方式下的有效地址是什么?
(1)立即寻址
(2)直接寻址
(3)使用BX的寄存器寻址
(4)使用BX的简接寻址
(5)使用BX的寄存器相对寻址
(6)基址变址寻址
(7)相对基址变址寻址
3.2试根据以下要求写出相应的汇编语言指令
(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中。
(2)用寄存器BX和SI的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中。
(3)用寄存器BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和(CX)相加,并把结果送回存储器中。
(4)用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回存储单元中。
(5)把数0B5H与(AL)相加,并把结果送回AL中。
3.3写出把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令。
要求使用以下几种寻址方式:
(1)寄存器间接寻址
(2)寄存器相对寻址
(3)基址变址寻址
3.4现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列各条指令执行完后AX寄存器的内容。
(1)MOVAX,1200H
(2)MOVAX,BX
(3)MOVAX,[1200H]
(4)MOVAX,[BX]
(5)MOVAX,1100[BX]
(6)MOVAX,[BX][SI]
(7)MOVAX,1100[BX][SI]
3.5给定(IP)=2BC0H,(CS)=0200H,位移量D=5119H,(BX)=1200H,(DS)=212AH,(224A0H)=0600H,(275B9H)=098AH,试为以下的转移指令找出转移的偏移地址。
(1)段内直接寻址
(2)使用BX及寄存器间接寻址方式的段内间接寻址
(3)使用BX及寄存器相对寻址方式的段内间接寻址
3.6设当前数据段寄存器的内容为1B00H,在数据段的偏移地址2000H单元内,含有一个内容为0FF10H和8000H的指针,它们是一个16位变量的偏移地址和段地址,试写出把该变量装入AX的指令序列,并画图表示出来。
3.7在0624H单元内有一条二字节JMPSHORTOBJ指令,如其中位移量为
(1)27H,
(2)6BH,(3)0C6H,试问转向地址OBJ的值是多少?
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]
3.9在ARRAY数组中依次存储了七个字数据,紧接着是名为ZERO的字单元,表示如下:
ARRAYDW23,36,2,100,32000,54,0
ZERODW?
(1)如果BX包含数组ARRAY的初始地址,请编写指令将数据0传送给ZERO单元。
(2)如果BX包含数据0在数组中的位移量,请编写指令将数据0传送给ZERO单元。
3.10如TABLE为数据段中0032单元的符号名,其中存放的内容为1234H,试问以下两条指令有什么区别?
指令执行完后AX寄存器的内容是什么?
MOVAX,TABLE
LEAAX,TABLE
3.11执行下列指令后AX寄存器中的内容是什么?
TABLEDW10,20,30,40,50;000AH,0014H,001EH,0028H,0032H
ENTRYDW3
┇
MOVBX,OFFSETTABLE
ADDBX,ENTRY
MOVAX,[BX]
3.12下列ASCII码串(包括空格符)依次存储在起始地址为CSTRING的字节单元中:
CSTRINGDB‘BASEDADDRESSING’
请编写指令将字符串中的第1个和第7个字符传送给DX寄存器。
3.13已知堆栈段寄存器SS的内容是0FFA0H,堆栈指针寄存器SP的内容是00B0H,先执行两条把8057H和0F79H分别进栈的PUSH指令,再执行一条POP指令。
试画出堆栈区和SP的内容变化过程示意图(标出存储单元的物理地址)。
3.14设(DS)=1B00H,(ES)=2B00H,有关存储单元的内容如上右图所示。
请写出两条指令把字变量X装入AX寄存器。
3.15求出以下各十六进制数与十六进制数62A0H之和,并根据结果设置标志位SF、ZF、CF和OF的值。
(1)1234H
(2)4321H(3)CFA0H(4)9D60H
3.16求出以下各十六进制数与十六进制数4AE0H的差值,并根据结果设置标志位SF、ZF、CF和OF的值。
(1)1234H
(2)5D90H(3)9090H(4)EA04H
3.17写出执行以下计算的指令序列,其中X、Y、Z、R、W均为存放16位带符号数单元的地址。
(1)Z←W+(Z-X)
(2)Z←W-(X+6)-(R+9)
(3)Z←(W*X)/(Y+6),R←余数(4)Z←((W-X)/5*Y)*2
3.18已知程序段如下:
MOV AX,1234H
MOV CL,4
ROL AX,CL
DEC AX
MOV CX,4
MUL CX
INT 20H
试问:
(1)每条指令执行完后,AX寄存器的内容是什么?
(2)每条指令执行完后,进位、符号和零标志的值是什么?
(3)程序结束时,AX和DX的内容是什么?
3.19下列程序段中的每条指令执行完后,AX寄存器及CF、SF、ZF和OF的内容是什么?
MOV AX,0
DEC AX
ADD AX,7FFFH
ADD AX,2
NOT AX
SUB AX,0FFFFH
ADD AX,8000H
SUB AX,1
AND AX,58D1H
SAL AX,1
SAR AX,1
NEG AX
ROR AX,1
3.20变量DATAX和变量DATAY的定义如下:
DATAXDW0148H
DW 2316H
DATAYDW0237H
DW 4052H
请按下列要求写出指令序列:
(1)DATAX和DATAY两个字数据相加,和存放在DATAY中。
(2)DATAX和DATAY两个双字数据相加,和存放在从DATAY开始的双字单元中。
(3)解释下列指令的作用:
STC
MOVBX,DATAX
ADCBX,DATAY
(4)DATAX和DATAY两个字数据相乘(用MUL)。
(5)DATAX和DATAY两个双字数据相乘(用MUL)。
(6)DATAX除以23(用DIV)。
(7)DATAX双字除以字DATAY(用DIV)。
3.21写出对存放在DX和AX中的双字长数求补的指令序列。
3.22试编写一程序求出双字长数的绝对值。
双字长数在A和A+2单元中,结果存放在B和B+2单元中。
3.23假设(BX)=0E3H,变量VALUE中存放的内容为79H,确定下列各条指令单独执行后的结果。
(1)XORBX,VALUE
(2)ANDBX,VALUE
(3)ORBX,VALUE
(4)XORBX,0FFH
(5)ANDBX,0
(6)TESTBX,01H
3.24试写出执行下列指令序列后BX寄存器的内容。
执行前(BX)=6D16H。
MOVCL,7
SHRBX,CL
3.25试用移位指令把十进制数+53和-49分别乘以2。
它们应该用什么指令?
得到的结果是什么?
如果要除以2呢?
3.26试分析下面的程序段完成什么功能?
MOVCL,04
SHLDX,CL
MOVBL,AH
SHLAX,CL
SHRBL,CL
ORDL,BL
3.27假定(DX)=0B9H,(CL)=3,(CF)=1,确定下列各条指令单独执行后DX中的值。
(1)SHRDX,1
(2)SARDX,CL
(3)SHLDX,CL
(4)SHLDL,1
(5)RORDX,CL
(6)ROLDL,CL
(7)SALDH,1
(8)RCLDX,CL
(4)RCRDL,1
3.28下列程序段执行完后,BX寄存器的内容是什么?
MOVCL,3
MOVBX,0B7H
ROLBX,1
RORBX,CL
3.29假设数据段定义如下:
CONAMEDB‘SPACEEXPLORERSINC.’
PRLINEDB20DUP(‘’)
用串指令编写程序段分别完成以下功能:
(1)从左到右把CONAME中的字符串传送到PRLINE。
(2)从右到左把CONAME中的字符串传送到PRLINE。
(3)把CONAME中的第3和第4个字节装入AX。
(4)把AX寄存器的内容存入从PRLINE+5开始的字节中。
(5)检查CONAME字符串中有无空格字符,如有则把第一个空格字符的地址传送给BX寄存器。
3.30编写程序段,把字符串STRING中的‘&’字符用空格符代替。
STRINGDB‘ThedateisFEB&03’
3.31假设数据段中数据定义如下:
STUDENT_NAMEDB30DUP(?
)
STUDENT_ADDRDB9DUP(?
)
PRINT_LINEDB132DUP(?
)
分别编写下列程序段:
(1)用空格符清除PRINT_LINE域。
(2)在STUDENT_ADDR中查找第一个‘-’。
(3)在STUDENT_ADDR中查找最后一个‘-’。
(4)如果STUDENT_NAME域中全是空格符时,填入‘*’。
(5)把STUDENT_NAME移到PRINT_LINE的前30个字节中,把STUDENT_ADDR移到PRINT_LINE的后9个字节中。
3.32编写一程序段:
比较两个5字节的字符串OLDS和NEWS,如果OLDS字符串不同于NEWS字符串则执行NEW_LESS;否则顺序执行程序。
3.33假定AX和BX中的内容为带符号数,CX和DX中的内容为无符号数,请用比较指令和条件转移指令实现以下判断:
(1)若DX的内容超过CX的内容,则转去执行EXCEED。
(2)若BX的内容大于AX的内容,则转去执行EXCEED。
(3)若CX的内容等于0,则转去执行ZERO。
(4)BX与AX的内容相比较是否产生溢出?
若溢出则转OVERFLOW。
(5)若BX的内容小于等于AX的内容,则转EQ_SMA。
(6)若DX的内容低于等于CX的内容,则转EQ_SMA。
3.34试分析下列程序段:
ADDAX,BX
JNOL1
JNCL2
SUBAX,BX
JNCL3
JNOL4
JMPSHORTL5
如果AX和BX的内容给定如下:
AXBX
(1)147BH80DCH
(2)B568H42C8H
(3)42C8H608DH
(4)D023H9FD0H
(5)94B7HB568H
问该程序分别在上面5种情况下执行后,程序转向哪里?
3.35指令CMPAX,BX后面跟着一条格式为J…L1的条件转移指令,其中…可以是B、NB、BE、NBE、L、NL、LE、NLE中的任意一个。
如果AX和BX的内容给定如下:
AXBX
(1)1F52H1F52H
(2)88C9H88C9H
(3)FF82H007EH
(4)58BAH020EH
(5)FFC5HFF8BH
(6)09A0H1E97H
(7)8AEAHFC29H
(8)D367H32A6H
问以上8条转移指令中的哪几条将引起转移到L1?
3.36假设X和X+2单元的内容为双精度数p,Y和Y+2单元的内容为双精度数q,(X和Y为低位字)试说明下列程序段做什么工作?
MOVDX,X+2
MOVAX,X
ADDAX,X
ADCDX,X+2
CMPDX,Y+2
JLL2
JGL1
CMPAX,Y
JBEL2
L1:
MOVAX,1
JMPSHORTEXIT
L2:
MOVAX,2
EXIT:
INT20H
3.37要求测试在STATUS中的一个字节,如果第1、3、5位均为1则转移到ROUTINE_1;如果此三位中有两位为1则转移到ROUTINE_2;如果此三位中只有一位为1则转移到ROUTINE_3;如果此三位全为0则转移到ROUTINE_4。
试画出流程图,并编制相应的程序段。
3.38在下列程序的括号中分别填入如下指令:
(1)LOOPL20
(2)LOOPEL20
(3)LOOPNEL20
试说明在三种情况下,当程序执行完后,AX、BX、CX、DX四个寄存器的内容分别是什么?
TITLEEXLOOP.COM
CODESGSEGMENT
ASSUMECS:
CODESG,DS:
CODSEG,SS:
CODSEG
ORG100H
BEGIN:
MOVAX,01
MOVBX,02
MOVDX,03
MOVCX,04
L20:
INCAX
ADDBX,AX
SHRDX,1
()
RET
CODESGENDS
ENDBEGIN
3.39考虑以下的调用序列:
(1)MAIN调用NEAR的SUBA过程(返回的偏移地址为0400);
(2)SUBA调用NEAR的SUBB过程(返回的偏移地址为0A00);
(3)SUBB调用FAR的SUBC过程(返回的段地址为B200,返回的偏移地址为0100);
(4)从SUBC返回SUBB;
(5)SUBB调用NEAR的SUBD过程(返回的偏移地址为0C00);
(6)从SUBD返回SUBB;
(7)从SUBB返回SUBA;
(8)从SUBA返回MAIN;
(9)从MAIN调用SUBC(返回的段地址为1000,返回的偏移地址为0600);
请画出每次调用及返回时的堆栈状态。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言