A.溢出标志OFB.符号标志SFC.方向标志DFD.零标志ZF
三、按要求写指令
1.将寄存器AX中内容通过移位的方法扩大1倍<假定原来AX内容不超过215)。
SHLAX,1
2.用逻辑运算指令将AX寄存器高4位置1。
ORAX,0F000H
3.用逻辑运算指令将AL寄存器低4位置为1。
ANDAL,000FH
4.测试AL的D7位,如果D7=1则转移
TESTAL,80H
JNZL1
5.将一个立即数2000H送入段寄存器
MOVAX,2000H
MOVDS,AX
6.把BX与CX寄存器内容相加,结果送入BX
ADDBC,CX
7.用寄存器间接寻址方式,实现一个立即数与存储单元内容相加,结果放回存储器。
MOVBX,OFFSETNUM
ADDWORDPTR[BX],N
8.假设数据段定义如下:
ADW5678H,0AABBH
BDW?
⑴用一条指令把A的偏移地址放入SI;
MOVSI,OFFSETA
⑵用一条指令把BX内容存入变量名B为地址的存储单元;
MOVB,BX
四、简答题
1.简述上机编程调试程序的几个步骤。
2.比较8086CPU子程序调用和执行中断服务操作的异同。
相同:
两者均发生断点保护、程序转移和程序返回
差异:
子程序调用是确定的,中断多数是随机的;子程序调用时保护IP、CS,中断服务保护IP、CS、FLAG。
SixE2yXPq5
3.什么叫开中断和关中断?
分别用什么指令实现?
各使标志IF为什么值?
2.开中断即允许中断,由STI指令实现,使IF值为1;
3.关中断即禁止中断,由CLI指令实现,使IF值为0.
4.简述DMA方式的工作特点。
DMA方式的工作特点为:
不需要CPU执行指令而在专门的硬件控制电路控制之下进行外设与存储器之间的直接数据传送,可以获得较高的数据传输速率。
这种专门的硬件控制电路称为DMAC五、读程序回答问题
1.指出下列程序完成的工作。
DSEGSEGMENT
S1DB‘abcdefghigklmnopqrstuvwxyz’
DSEGENDS
ESEGSEGMENT
S2DB26DUP(?
>
ESEGENDS
SSEGSEGMENTSTACK
DB100DUP(?
>
SSEGENDS
CSEGSEGMENT
ASSUMECS:
CSEG,DS:
DSEG,ES:
ESEG,SS:
SSSEG
START:
MOVAX,DSEG
MOVDX,AX
MOVAX,ESEG
MOVES,AX
MOVSI,OFFSETS1
MOVDI,OFFSETS2
MOVCX,26D
LOP1:
MOVAL,[SI]
SUBAL,20H
MOVES:
[DI],AL
MOVDL,AL
MOVAH,02H
INT21H
INCSI
INCDI
LOOPLOP1
MOVAH,4CH
INT21H
CSEGENDS
ENDSTART
将DS段中的26个小写字母对应转换成大写字母放入附加段中,并显示26个大写字母。
2.指出下列程序完成的工作。
DATASEGMENT
BUFFDB7,15,-5,9,-8,0,3,35
COUNTEQU$-BUFF。
COUNT的值为BUFF所占的字节数
PLUSDB?
MINUSDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVCX,COUNT。
MOVDL,0
MOVAH,0
LEABX,BUFF
AGAIN:
CMPBYTEPTR[BX],0
JGEPLU
INCAH
JMPNEXT
PLU:
INCDL
NEXT:
ADDBX,1
LOOPAGAIN
MOVPLUS,DL
MOVMINUS,AH
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
在给定个数的8位数串中,统计出大于/等于零的个数,并且将大于/等于零的个数存放PLUS变量中,小于零的个数存放MINUS变量中。
kavU42VRUs
3.指出下列程序完成的工作。
DATASEGMENT
ADB‘ABCDEFGH’
BDB‘12345678’
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEASI,A
LEADI,B
MOVCX,8
LP:
MOVAL,[SI]
XCHGAL,[DI]
MOV[SI],AL
INCSI
INCDI
LOOPLP
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
该程序段的功能为把从A开始的8个字节单元的内容依次和从B开始的8个相应字节单元的内容互换。
4.指出下列程序完成的工作。
<5分)
MOVAL,BUF
TESTAL,80H
JZDONE
NEGAL
DONE:
MOVBUF,AL
HLT
5.定义数据段如下,指出下列程序完成的工作。
ARRAYDW1122H,3344H,5566H
SUNDW?
MOVCX,3
MOVAX,0
MOVSI,0
MOVBX,OFFSETARRAY
LOP:
ADDAX,[BX][SI]
ADDSI,2
LOOPLOP
MOVSUN,AX
将三个字数据对它们求和后将运算结果存入字变量SUN中
六、汇编语言编程题
1.用9号DOS功能调用在屏幕上显示字符串“HOWAREYOU?
”。
DSEGSEGMENT
S1DB‘HOWAREYOU’,‘$’
DSEGENDS
SSEGSEGMENTSTACK
DB100DUP(?
>
SSEGENDS
CSEGSEGMENT
ASSUMECS:
CSEG,DS:
DSEG,SS:
SSSEG
START:
MOVAX,DSEG
MOVDS,AX
MOVDX,OFFSETS1
MOVAH,09H
INT21H
MOVAH,4CH
INT21H
CSEGENDS
ENDSTART
2.设有二个长度相同的字符串分别放在以STR1和STR2为首地址的数据区中,
定义如下:
STR1DB‘ABCD’
STR2DB‘ABCF’
试编写完整程序检查这二个字符串是否相同。
若相同标志单元FLAG置零,否则标志单元FLAG置-1
datasegment
STR1DB‘ABCD’
STR2DB‘ABCF’
Flagdb?
numequstr2-str1
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
leasi,str1
leadi,str2
movcx,num
l1:
movah,[si]
cmpah,[di]
jnzdiff
incsi
incdi
loopl1
jmpsame
diff:
movflag,0ffh
jmpexit
same:
movflag,00h
exit:
movah,4ch
int21h
codeends
endstart
3.8255A接口的应用编程,参考8255A实验
申明:
所有资料为本人收集整理,仅限个人学习使用,勿做商业用途。
申明:
所有资料为本人收集整理,仅限个人学习使用,勿做商业用途。