汇编语言补充作业和答案.docx
- 文档编号:10464456
- 上传时间:2023-02-13
- 格式:DOCX
- 页数:17
- 大小:20.01KB
汇编语言补充作业和答案.docx
《汇编语言补充作业和答案.docx》由会员分享,可在线阅读,更多相关《汇编语言补充作业和答案.docx(17页珍藏版)》请在冰豆网上搜索。
汇编语言补充作业和答案
《微机系统与接口技术》汇编补充作业
1.寻址方式小结。
请根据已填的格式,完成下面表中的空白部分:
寻址方式
操作数物理地址(PA)
指令格式举例
立即寻址
操作数由指令给出
MOVDX,100H;(DX)←100
寄存器寻址
操作数在寄存器中
MOVAX,BX;(AX)←(BX)
直接寻址
操作数的有效地址由指令直接给出
MOVAX,[1234H]
寄存器间接寻址
(BX)
PA=(DS)×16+(SI)
(DI)
或=(SS)×16+(BP)
MOVAX,[BX]
MOVAX,[SI]
MOVAX,[DI]
MOVAX,[BP]
基址寻址
PA=(DS)×16+(BX)+位移量
PA=(SS)×16+(BP)+位移量
MOVAX,BUFF[BX]
MOVAX,BUFF[BP]
变址寻址
PA=(DS)×16+(SI)+位移量
PA=(DS)×16+(DI)+位移量
MOVAX,BUFF[SI]
MOVAX,BUFF[DI]
基址变址寻址
PA=(DS)×16+(BX)+(SI)
PA=(DS)×16+(BX)+(DI)
PA=(SS)×16+(BP)+(SI)
PA=(SS)×16+(BP)+(DI)
MOVAX,[BX][SI]
MOVAX,[BX+DI]
MOVAX,[BP][SI]
MOVAX,[BP+DI]
基址变址相对寻址
PA=(DS)×16+(BX)+(SI)+位移量
PA=(DS)×16+(BX)+(DI)+位移量
PA=(SS)×16+(BP)+(SI)+位移量
PA=(SS)×16+(BP)+(DI)+位移量
MOVAX,BUFF[BX][SI]
MOVAX,BUFF[BX+DI]
MOVAX,BUFF[BP][SI]
MOVAX,BUFF[BP+DI]
2.指出下列8088指令的错误:
(1)MOVAH,BX
(2)MOV[BX],[SI]
(3)MOVAX,[SI][DI]
(4)MOVMYDAT[BX][SI],ES:
AX
(5)MOVBL,1000
(6)MOVCS,AX
(7)MOVDS,BP
(8)XLATBX
(9)INAX,0382H
(10)OUTAX,20H
答:
(1)两个操作数长度不一致
(2)两个操作数不能都是存储器操作数
(3)变址寻址方式不能使用两个变址寄存器
(4)寄存器寻址没有段超越用法
(5)两个操作数长度不一致(或1000超出字节数据范围)
(6)CS不能做目的寄存器
(7)段寄存器只能由通用寄存器对其操作,BP不能对通用寄存器进行操作
(8)XLAT中BX是隐含操作数
(9)IN指令中16位端口地址要用DX作为操作数
(10)OUT指令两个操作数反了
3.按要求编写下面的程序段
1)利用移位指令计算DX=3×AX+7×BX,假设为无符号数运算,无进位。
2)用逻辑运算指令实现数字0~9的ASCII码与非压缩BCD码的互相转换
3)把DX.AX中的双字右移4位
4)假设从4A00H:
0000开始的4个字节中存放了4个非压缩的BCD码,现在按照低地址对低位,高地址对高位的原则,将他们合并到DX中。
答:
1)MOVCX,AX
SHLAX,1;AX*2
ADDAX,CX;AX*3
MOVDX,BX
MOVCL,3
SHLDX,CL;BX*8
SUBDX,BX;BX*7
ADDDX,AX
2)MOVAL,’0’
LOP:
ANDAL,0FH
INCAL
CMPAL,‘:
’
JNELOP
MOVAL,0
LOP1:
ORAL,30H
INCAL
CMPAL,0AH
JNELOP1
3)MOVCL,4
SHRAX,CL
MOVBL,DL
SHRDX,CL
SHLBL,CL
ORAH,BL
4)MOVAX,4A00H
MOVDS,AX
MOVCL,4
MOVSI,0
MOVAL,[SI]
ANDAL,0FH
MOVDL,AL
INCSI
MOVAL,[SI]
SHLAL,CL
ORDL,AL
INCSI
MOVAL,[SI]
ANDAL,0FH
MOVDH,AL
INCSI
MOVAL,[SI]
SHLAL,CL
ORDH,AL
4.请说明下面两段程序的功能
1)movsi,600h
movdi,601h
movax,ds
moves,ax
movcx,256
std
repmovsb
2)cld
movax,0fefh
movcx,5
movbx,3000h
moves,bx
movdi,2000h
repstosw
答:
1)从DS:
600H开始将向低地址方向的256字节向高地址移动一个字节位置。
2)从3000:
2000h开始连续存放5个0fefh
5.假设DS=2000H.BX=1256H,SI=528FH,位移量TABLE=20A1H,[232F7H]=3280H,[264E5H]=2450H,试问执行下列段内间接寻址的转移指令后,转移到有效地址是什么?
i.JMPBX
ii.JMPTABLE[BX]
iii.JMP[BX][SI]
答:
(1)1256H
(2)3280H(3)2450H
6.判断下列程序段跳转到条件
(1)XORAX,1E1EH
JEEQUAL
(2)TESTAL,10000001B
JNZTHERE
(3)CMPCX,64H
JBTHERE
答:
(1)(AX)=1E1EH
(2)(AL)的最高位和/或最低位为1(3)(CX)<64H
7.如果条件跳转指令的跳转目标范围超出-128~127的范围,该如何处理?
举例说明。
答:
可以把跳转条件做一些调整,利用无条件跳转的跳转范围大,来达到目的,如:
CMPAX,33
JELONG
……;大于127字节
LONG:
改为:
CMPAX,33
JNESHOETER
JMPLONG
SHORTER:
……;大于127字节
……
LONG:
8.按要求编写下面的程序段
1)当DX高4位全为0时,使AX=0,否则AX=-1。
2)已知字符串string包含有256BYTE的内容,将其中所有的‘$’符号替换成空格(‘’)。
3)所谓回文字符串是指一个字符串正读和倒读都是一样的,例如字符串‘ABCDEFFEDCBA’就是一个回文字符串,而字符串‘ABCFDDCAB’就不是回文字符串。
现在有一个字符串string,包含有16个字节的内容,请编写程序段,判断该字符串是否为回文字符串。
4)统计以‘$’字符结束的字符串string的字符个数。
答:
1)
TESTDX,0F0H
JZOK1
XORAX,AX
JMPOK2
OK1:
MOVAX,-1
Ok2:
…
2)
MOVCX,256
MOVAL,‘$’
MOVAH,‘’
LEABX,string
LP:
CMP[BX],AL
JNZNEXT
MOV[BX],AH
NEXT:
INCBX
DECCX
JNZLP
3)
LEASI,string
MOVDI,15
ADDDI,SI
LP:
MOVAL,[SI]
CMPAL,[DI]
JNZNO;不是回文
INCSI
DECDI
CMPSI,DI
JBLP
……;是回文
NO:
……;不是回文
4)
MOVCX,0;放字符个数
LEASI,string
LP:
MOVAL,[SI]
CMPAL,’$’
JEEXIT
INCSI
INCCX
JMPLP
EXIT:
9.设置CX=0,则LOOP指令将执行多少次?
例如:
movcx,0
delay:
loopdelay
答:
将执行65536次
10.在下面程序段的括号中如果分别放上下面的指令
(1)LOOPL20
(2)LOOPNEL20
(3)LOOPEL20
试说明,当程序执行完时AX,BX,CX,DX四个寄存器的内容分别是什么?
MOVAX,01
MOVBX,02
MOVCX,03
MOVDX,04
L20:
INCAX
ADDBX,AX
SHRDX,1
()
RET
答:
(1)(AX)=4,(BX)=11,(CX)=0,(DX)=0
(2)(AX)=4,(BX)=11,(CX)=0,(DX)=0
(3)(AX)=2,(BX)=4,(CX)=2,(DX)=2
11.下面两条短转移指令的转移地址A10和A20分别是多少?
(用16进制来表示)
(1)0110EBF7JMPA10
(2)0110EB09JMPA20
指令地址(16进制)指令码汇编语句
答:
(1)A10=0109H
(2)A20=011BH
12.按要求编写下面的程序段
1)将ELEMS中的100个字节数据的位置颠倒过来(即第一个字节和第100个字节的内容交换,第二个字节和第99个字节的内容交换……)。
2)有两个3位的ASCII码字串ASC1和ASC2定义如下:
ASC1DB‘578’
ASC2DB‘694’
ASC3DB‘0000’
请编写计算ASC3=ASC1+ASC2的程序段。
3)编写四字节ASCII码串‘3785’与ASCII数码‘5’相乘的程序段。
答:
1)
LEASI,ELEMS
MOVDI,SI
ADDDI,99
MOVCX,50
LP:
MOVAL,[SI]
XCHGAL,[DI]
XCHGAL,[SI]
INCSI
DECDI
DECCX
JNZLP
2)
CLC;清CF
PUSHF
LEASI,ASC1+2;从个位开始加,DB'578'等同于DB'5','7','8'
LEADI,ASC2+2
LEABX,ASC3+3
MOVCX,3;计算的数有位
A20:
MOVAH,0
MOVAL,[SI]
SUBAL,30H;;ASCII码转BCD码
MOVDL,[DI]
SUBDL,30H;ASCII码转BCD码
POPF
ADCAL,DL
AAA;非压缩BCD码加法调整
PUSHF
ADDAL,30H;BCD码转ASCII码
MOV[BX],AL
DECSI
DECDI
DECBX
LOOPA20
POPF
ADDAH,30H
MOV[BX],AH
3)
MOVCX,4
LEASI,MULCND+3
LEADI,PRODUCT+4
ANDMULPLR,0FH;ASCII码转BCD码
A30:
MOVAL,[SI]
ANDAL,0FH;ASCII码转BCD码
MULMULPLR
AAM;BCD码乘调整
ADDAL,[DI]
AAA;BCD码加法调整
ORAL,30H
MOV[DI],AL
DECDI
MOV[DI],AH
DECSI
LOOPA30
ORBYTEPTR[DI],30H
13.请编写完整程序在一个升序字节数组中查找数N,找到后将此数从数组中删除,并使得CF=0;没找到返回CF=1。
数组的首地址和末地址为A_HEAD和A_END。
答:
DATASEGMENTPARA'DATA'
A_HEADDW?
BUFFDB1,2,3,4,5,6,7,8,9,0
COUNTEQU$-BUFF
A_ENDDW?
NDB4
DATAENDS
CODESEGMENTPARA'CODE'
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVSI,OFFSETBUFF
MOVA_HEAD,SI
MOVAL,COUNT
CBW
ADDAX,SI
MOVDI,AX
DECDI
MOVA_END,DI
MOVAL,N
LP:
CMPAL,[SI]
JNENEXT
JMPDEL
NEXT:
INCSI;考察下一个数据
CMPSI,DI
JBELP;循环
STC;CF<-1
JMPEXIT
DEL:
CLC;CF<-0
CMPSI,DI
JNEDELDATA
DECA_END;删除的是最后一个元素
JMPEXIT
DELDATA:
MOVCX,DI
SUBCX,SI
LP2:
MOVAL,[SI+1];该循环将SI+1到DI位置的数据移动到SI到DI-1的位置
MOV[SI],AL
INCSI
LOOPLP2
DECA_END;调整结尾指针
EXIT:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
14.请编写完整程序从键盘读取字符,如果是十进制的‘0’~‘9’则在屏幕上输出该数的8位二进制码,并将数字依次存放到BUF开头的数组中,如果读入的字符是’Q’或者‘q’,则程序退出,其他情况在屏幕上打印“Youmustinput0~9,or‘q’or‘Q’”。
(如输入的字符是‘9’,则输出“00001001”)
提示:
语句“Youmustinput0~9,or‘q’or‘Q’”定义成以’$’结尾的字符串,键盘输入和屏幕输出,请参看教材后的DOS功能调用(int21h)的相关功能。
输出一个数的2进制形式应该从最高位开始输出,可以将此段程序定义成一个过程。
答:
;'"Youmustinput0~9,or'q'or'Q'"。
DATASEGMENTPARA'DATA'
sentencedb'Youmustinput0~9,or"q"or"Q\"','$'
bufdb20dup(?
)
DATAENDS
CODESEGMENTPARA'CODE'
ASSUMECS:
CODE,DS:
DATA
MAINPROCFAR
PUSHDS
MOVAX,0
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVSI,0
DOIT:
MOVAH,1
INT21H
CMPAL,'Q'
JNENEXT
JMPEXIT
NEXT:
CMPAL,'q'
JNENEXT1
JMPEXIT
NEXT1:
SUBAL,30H
JCPRINT
JMPNEXT2
PRINT:
MOVAH,9
LEADX,SENTENCE
INT21H
CALLCRLF
JMPDOIT
NEXT2:
CMPAL,9
JGPRINT
MOVCX,8
CALLCRLF
PRNDATA:
SHLAL,1
JCIS1
MOVDL,'0'
JMPOUTBIN
IS1:
MOVDL,'1'
OUTBIN:
PUSHAX
MOVAH,2
INT21H
POPAX
LOOPPRNDATA
CALLCRLF
JMPDOIT
EXIT:
RET
MAINENDP
CRLFPROCNEAR;回车换行
PUSHAX
PUSHDX
MOVDL,0DH;回车
MOVAH,2
INT21H;输出DL中的字符
MOVDL,0AH;换行
MOVAH,2
INT21H;输出DL中的字符
POPDX
POPAX
RET
CRLFENDP
CODEENDS
ENDMAIN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 补充 作业 答案