汇编语言和汇编程序资料.docx
《汇编语言和汇编程序资料.docx》由会员分享,可在线阅读,更多相关《汇编语言和汇编程序资料.docx(20页珍藏版)》请在冰豆网上搜索。
汇编语言和汇编程序资料
汇编语言和汇编程序
一、回答下列问题
1、何谓汇编语言程序?
何谓汇编程序?
简述汇编程序的功能。
2、什么叫做变量?
变量有哪几种属性?
程序中如何放问变量?
3、什么叫做标号?
标号有哪几种属性?
4、8088汇编语言中有哪几类运算符?
5、什么叫做表达式?
它的运算规则是什么?
6、8088/8086汇编语言程序中段的类型有哪几种?
段定义中定位类型、组合类型和类别名各有什么作用?
7、设VALAEQU200
VALBEQU30
VALCEQU1BH
下列表达式的值各为多少?
(1)(VALA*VALC+VALB)/VALC
(2)(VALAMODVALC-VALB/VALC
(3)(VALBAND0FH)OR(VALBXOR0FH)
(4)(VALAGEVALB)AND0FH
8、根据下列数据定义,各条指令单独运行后,AX的内容是什么?
TABLEADW10DUP(?
)
TABLEBDB10DUP(?
)
TABLECDB‘1234’
TABLEDDW1,2,3,4
(1)MOVAX,TYPETABLEA
(2)MOVAX,TYPETABLEB
(3)MOVAX,TYPETABLEC
(4)MOVAX,TYPETABLED
(5)MOVAX,LENGTHTABLEA
(6)MOVAX,LENGTHTABLEB
(7)MOVAX,LENGTHTABLEC
(8)MOVAX,LENGTHTABLED
(9)MOVAX,SIZETABLEA
(10)MOVAX,SIZETABLEB
(11)MOVAX,SIZETABLEC
(12)MOVAX,SIZETABLED
9、执行下列指令后,AX寄存器的内容是什么?
TABLEDW0,100,200,300,400
DISTADW6
(1)MOVBX,OFFSETTABLE
ADDBX,DISTA
MOVAX,[BX]
(2)LEABX,TABLE
MOVAX,2[BX]
(1)MOVSI,4
MOVBX,OFFSETTABLE
MOVAX,[BX][SI]
(2)MOVBX,DISTA
MOVAX,TABLE[BX]
10、画图说明下列语句分配存储空间及初始化的数据值。
(1)BYTE-VARDB‘BYTE’,12,12H,2DUP(0,3DUP
(2))
(2)WORD-VARDW4DUP(0,1,2),-5,‘BY’,‘TE’
11、定义一个数据段的字符变量和数据变量。
(1)TRING为字符串变量:
‘Personalcomputer’
(2)VALD为十进制数字节变量12,99
(3)VALH为十六进制数字变量32H,0FAH
(4)VALZ为10个零的字节变量
(5)VALW为20个字单元
12、根据数据段的定义,答出L值是多少?
它表示什么意义?
(1)BUFADB0
BUFBDB1
LEQUBUFB-BUFA
(2)STADW20DUP(?
)
LEQULENGTHSTA
13、定义一个数据段,要求如下:
(1)段界起始于字边界
(2)该段与同名逻辑段相邻连接成一个物理段
(3)类别号为‘DATA’
(4)定义数据12,30,‘ABCD’
(5)保留20个字的存储区
二、填空题
1、假设(DS)=2000H,(BX)=1256H,(SI)=528FH;位移量TABLE=20A1H,(232F7H0=3280H,(264E5H)=2450H,则
执行指令JMPBX后,(IP)=;
执行指令JMPTABLE[BX]后,(IP)=;
执行指令JMP[BX][SI]后,(IP)=。
2、在1000H单元中有一条二字节指令JMPSHORTLAB,如果其中偏移量分别为30H、6CH、0B8H,则转向地址LAB的值分别为;;;
3、数据段中有以下定义:
ARRAY1EQU16H
ARRAY2DW16H
请指出下面两条指令的寻址方式:
MOVAX,ARRAY1;寻址方式。
MOVAX,ARRAY2;寻址方式。
4、下面两个语句的区别在于、。
X1EQU1000H
X2=1000H
5、指令“ANDAX,STR1ANDSTR2”中,STR1和STR2是两个已赋值的变量,两个AND的区别是、。
6、指令LOOPZ/LOOPE是结果或发生转移的指令。
而指令LOOPNZ/LOOPNE则是结果或发生转移的指令。
7、调用指令CALL可分为、、和等四种调用。
8、在汇编语言中,一个过程有NEAR和FAR两种属性。
NEAR属性表明主程序和子程序,FAR属性表示主程序和子程序。
9、串处理指令规定源寄存器使用,源串在段中;目的寄存器使用,目的串必须在段中。
10、是过程定义结束伪指令,与配套使用。
是段定义结束伪指令,与配套使用。
11、一个有16个字的数据区,它的起始地址为70A0:
DDF6H,那么该数据区的最后一个字单元的物理地址为H。
12、对于下面的数据定义:
A1DW20DUP(?
)
A2DB20DUP(?
)
A3DB‘987654321’
……
MOVAX,LENGTHA1
MOVBX,LENGTHA2
MOVCX,LENGTHA3
各条指令执行后,相应寄存器的内容为:
(AX)=,(BX)=,(CX)=。
13、在数据段定义有一字变量如下:
DATASEGMENT
ARRAYDW2,$+2,5,7,$+6,0DH
DATAENDS
填入数据段ARRAY区存储单元的内容。
14、执行下列指令后:
TABLEDW10,20,30,40,50
ENTRYDW3
……
MOVBX,OFFSETTABLE
ADDBX,ENTRY
MOVAX,[BX]
寄存器(AX)=
四、是非判断题
1、程序在数据段中的定义如下:
DATASEGMENT
NAMESDB‘ABCD’
NAMETDW20
DATAENDS
请判断下列指令是否正确?
正确的填‘A’,错误的填‘B’并说明原因
(1)MOVBX,OFFSETNAMES()
MOVAL,[BX+2]()
(2)MOVAX,NAMES()
(3)MOVAX,WORDPTRNAMES+1()
(4)MOVAL,NAMET()
(5)MOVAL,BYTEPTRNAMET()
(6)MOVAX,DATA()
MOVDS,AX()
(7)MOVAX,SEGNAMES()
(8)MOVBX,DATA()
MOVAL,[BX+3]()
2、下面各题中有无语法错误?
若无语法错误,请在括号中填‘A’,若有语法错误,请在括号中填‘B’,并按其意图修改题中的相应语句。
(1)M1DB1234()
(2)M2DW‘ABCD’()
(3)M3DW50H
:
:
MOVAL,M3()
(4)M4EQU10H
:
:
MOVM4,AL()
(5)M5DB?
:
:
MOVBX,M5
MOV[BX],1000H()
汇编语言程序设计
一、完成下列练习
1、设(DS)=0300H,(CS)=0200H,(IP)=0100H,(BX)=1000H,DISPLACE=2000H,(4000H)=5000H,(6000H)=8000H
确定无条件转换指令的段内转移地址
(1)JMPBX
(2)JMP[BX]
(3)JMPDISPLACE[BX]
2、设AX和BX寄存器中是有符号数,CX和DX寄存器中是无符号数,写出下列条件转移指令。
(1)CX值高于或等于DX值,则转移HIEQU
(2)AX值大于BX值,则转移GREAT
(3)CX值为0,则转移ZERO
(4)AX值小于或等于BX值,则转移SMAEQU
(5)CX值低于或等于DX值,则转移LOWEQU
(6)AX为负值,则转移NEGAT
(7)AX为偶数,则转移IMAGE
3、写出下列串操作指令所替代的指令序列。
(1)REPMOVSB
(2)REPLODSB
(3)REPSTOSB
(4)REPSCASB
4、指出下列指令序列中的错误。
(1)CMPAL,-3
JAINVALID
:
:
INVALID:
……
(2)START:
MOVCX,3
SUBAL,10
LOOPSTART
:
:
(3)CRAYPROC
PUSHAX
ADDAX,BX
RET
CRAYENDP
(4)INAL,PROT
JPENEXT
:
:
NEXT:
……
5、分析执行下列程序段完成什么功能?
(1)BEGIN:
INAL,5FH
TESTAL,80H
JZNEGATIVE
MOVAH,0
JMPSTOP
NEGATIVE:
MOVAH,0FFH
STOP:
HLT
(2)START:
INAL,20H
MOVBL,AL
INAL,30H
MOVCL,AL
MOVAX,0
REPEAT:
ADDAL,BL
ADDAL,BL
ADCAH,0
DECCL
JNZREPEAT
HLT
(3)ASK:
MOVDX,0210H
INAL,DX
TESTAL,48H
JNZASK
INCDX
MOVAL,0FFH
OUTDX,AL
:
:
二、编写下列程序
1、数据段定义如下:
DATASEGMENT
FIRSTDB90H,5FH,6EH,69H
SECONDDB4DUP(?
)
THIRDDB4DUP(?
)
FORTHDB4DUP(?
)
DATAENDS
(1)编写程序,将FIRST开始的四个字节十六进制数左移两位,结果存放在SECOND开始的存储区中。
(2)编写程序,将FIRST开始的四个字节十六进制数右移4位,结果存放在THIRD开始的存储区中。
(3)编写程序,求FIRST开始的四个字节十六进制数的补码,结果存放在FORTH开始的存储区中。
2、在内存缓冲区BCDBUF中,存放10个字节压缩的BCD数,编写程序求这10个数的和,结果送SUM缓冲(占用两个字节)。
3、编写程序计算S=2+4+6+……+200。
4、编写将BUFFER为开始的100个连续单元清零的程序。
5、编写程序把SOURCE源数据区的100个数据,存放在DEST目的数据区。
6、将FIRST单元开始的数据块传送到SECOND单元开始的存储区中,若发现传送的数据为0,则结束传送,分两种情况编写程序。
(1)两个数据区不重迭。
(2)两个数据区重迭。
7、编写一个程序,比较两个字符串是否相等。
若两个字符串相等,则在RESULT单元存放字符‘E’;否则存放