汇编语言补充作业和答案
更新时间:2023-12-23 00:42:02 阅读量: 教育文库 文档下载
《微机系统与接口技术》汇编补充作业
1. 寻址方式小结。请根据已填的格式,完成下面表中的空白部分: 寻址方式 立即寻址 操作数物理地址(PA) 操作数由指令给出 指令格式举例 MOV DX, 100H; (DX)←100 MOV AX, BX; (AX)←(BX) MOV AX, [1234H] MOV AX, [BX] MOV AX, [SI] MOV AX, [DI] MOV AX, [BP] MOV AX, BUFF[BX] MOV AX, BUFF[BP] MOV AX, BUFF[SI] MOV AX, BUFF[DI] MOV AX, [BX][SI] MOV AX, [BX+DI] MOV AX, [BP][SI] MOV AX, [BP+DI] MOV AX, BUFF[BX][SI] MOV AX, BUFF[BX+DI] MOV AX, BUFF[BP][SI] MOV AX, BUFF[BP+DI] 寄存器寻址 操作数在寄存器中 直接寻址 寄存器间接寻址 操作数的有效地址由指令直接给出 (BX) PA=(DS)×16+(SI) (DI) 或=(SS)×16+(BP) PA=(DS) ×16+(BX)+位移量 PA=(SS) ×16+(BP)+位移量 PA=(DS) ×16+(SI)+ 位移量 PA=(DS) ×16+(DI)+ 位移量 PA=(DS) ×16+(BX)+(SI) PA=(DS) ×16+(BX)+(DI) PA=(SS) ×16+(BP)+(SI) PA=(SS) ×16+(BP)+(DI) PA=(DS)×16+(BX)+(SI) +位移量 PA=(DS)×16+(BX)+(DI)+位移量 PA=(SS)×16+(BP)+(SI) +位移量 PA=(SS)×16+(BP)+(DI)+位移量 基址寻址 变址寻址 基址变址寻址 基址变址相对寻址
2.指出下列8088指令的错误: (1) MOV AH, BX (2) MOV [BX], [SI] (3) MOV AX, [SI][DI]
(4) MOV MYDAT[BX][SI], ES:AX (5) MOV BL, 1000 (6) MOV CS, AX (7) MOV DS, BP (8) XLAT BX (9) IN AX, 0382H (10) OUT AX, 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)MOV CX, AX SHL AX, 1 ; AX*2 ADD AX, CX ; AX*3 MOV DX, BX MOV CL, 3
SHL DX, CL ; BX*8 SUB DX, BX ; BX*7 ADD DX, AX
2)MOV AL, ’0’
LOP: AND AL, 0FH INC AL
CMP AL, ‘:’ JNE LOP MOV AL, 0
LOP1: OR AL, 30H INC AL
CMP AL, 0AH JNE LOP1
3) MOV CL, 4 SHR AX,CL MOV BL, DL SHR DX, CL SHL BL, CL OR AH, BL
4)MOV AX, 4A00H MOV DS, AX MOV CL, 4 MOV SI, 0 MOV AL, [SI] AND AL, 0FH MOV DL, AL INC SI
MOV AL, [SI] SHL AL, CL OR DL, AL INC SI
MOV AL, [SI] AND AL, 0FH MOV DH, AL INC SI
MOV AL, [SI] SHL AL, CL OR DH, AL
4. 请说明下面两段程序的功能
1) mov si, 600h
mov di, 601h mov ax, ds mov es, ax mov cx, 256 std
rep movsb
2) cld
mov ax, 0fefh
mov cx, 5
mov bx, 3000h mov es, bx mov di, 2000h rep stosw
答:1 )从DS:600H 开始将向低地址方向的256 字节向高地址移动一个字节位置。
2 )从3000:2000h 开始连续存放 5 个0fefh
5. 假设DS=2000H. BX=1256H, SI=528FH, 位移量TABLE=20A1H,
[232F7H]=3280H, [264E5H]=2450H, 试问执行下列段内间接寻址的转移指令后,转移到有效地址是什么?
i. JMP BX ii. JMP TABLE[BX] iii. JMP [BX][SI]
答: (1)1256H (2)3280H (3)2450H
6. 判断下列程序段跳转到条件
(1) XOR AX, 1E1EH JE EQUAL
(2) TEST AL, 10000001B JNZ THERE (3) CMP CX, 64H JB THERE 答:(1) (AX)=1E1EH (2) (AL) 的最高位和/ 或最低位为1 (3) (CX)<64H
7. 如果条件跳转指令的跳转目标范围超出-128~127的范围,该如何处
理?举例说明。
答:可以把跳转条件做一些调整,利用无条件跳转的跳转范围大,来达到目的,如:
CMP AX, 33 JE LONG
?? ; 大于 127 字节 LONG: 改为:
CMP AX, 33
JNE SHOETER JMP LONG
SHORTER:??; 大于127 字节
?? LONG:
8. 按要求编写下面的程序段
1) 当DX高4位全为0时,使AX=0,否则AX=-1。
2) 已知字符串string包含有256BYTE的内容,将其中所有的‘$’符
号替换成空格(‘ ’)。
3) 所谓回文字符串是指一个字符串正读和倒读都是一样的,例如字符
串‘ABCDEFFEDCBA’就是一个回文字符串,而字符串‘ABCFDDCAB’就不是回文字符串。现在有一个字符串string,包含有16个字节的内容,请编写程序段,判断该字符串是否为回文字符串。
4) 统计以‘$’字符结束的字符串string的字符个数。 答: 1 )
TEST DX, 0F0H JZ OK1 XOR AX, AX JMP OK2
OK1:MOV AX, -1 Ok2: ? 2 )
MOV CX, 256 MOV AL, ‘$’ MOV AH, ‘ ’ LEA BX, string
LP: CMP [BX], AL JNZ NEXT MOV [BX], AH NEXT:INC BX DEC CX JNZ LP
3)
LEA SI,string MOV DI, 15 ADD DI, SI
LP: MOV AL, [SI] CMP AL, [DI]
JNZ NO ; 不是回文 INC SI DEC DI CMP SI, DI JB LP
?? ; 是回文 NO:?? ; 不是回文 4)
MOV CX,0 ;放字符个数 LEA SI, string LP: MOV AL, [SI] CMP AL, ’$’ JE EXIT INC SI INC CX JMP LP EXIT:
9. 设置CX=0,则LOOP指令将执行多少次?例如:
mov cx, 0 delay: loop delay 答:将执行65536 次
10. 在下面程序段的括号中如果分别放上下面的指令
(1) LOOP L20 (2) LOOPNE L20 (3) LOOPE L20
试说明,当程序执行完时 AX, BX, CX, DX四个寄存器的内容分别是什么?
MOV AX, 01
MOV BX, 02 MOV CX, 03 MOV DX, 04 L20: INC AX
ADD BX, AX SHR DX, 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) 0110 EB F7 JMP A10 (2) 0110 EB 09 JMP A20 指令地址(16进制) 指令码 汇编语句 答: (1 )A10=0109H (2 )A20=011BH
12. 按要求编写下面的程序段
1) 将ELEMS中的100个字节数据的位置颠倒过来(即第一个字节和
第100个字节的内容交换,第二个字节和第99个字节的内容交换??)。
2) 有两个3位的ASCII码字串ASC1和ASC2定义如下:
ASC1 DB ‘578’ ASC2 DB ‘694’ ASC3 DB ‘0000’
请编写计算ASC3=ASC1+ASC2的程序段。
3) 编写四字节ASCII码串‘3785’与ASCII数码‘5’相乘的程序段。 答:1 )
LEA SI, ELEMS MOV DI, SI ADD DI, 99 MOV CX,50
LP : MOV AL, [SI] XCHG AL, [DI] XCHG AL, [SI] INC SI
DEC DI DEC CX JNZ LP 2)
CLC ; 清CF PUSHF
LEA SI,ASC1+2 ; 从个位开始加,DB '578' 等同于DB '5','7','8' LEA DI,ASC2+2 LEA BX,ASC3+3
MOV CX,3 ; 计算的数有位 A20: MOV AH,0
MOV AL,[SI]
SUB AL,30H; ; ASCII码转BCD码 MOV DL,[DI]
SUB DL,30H ; ASCII 码转BCD码 POPF
ADC AL,DL
AAA ; 非压缩 BCD码加法调整 PUSHF
ADD AL,30H ; BCD 码转ASCII 码 MOV [BX],AL DEC SI DEC DI DEC BX LOOP A20 POPF
ADD AH,30H MOV [BX],AH 3)
MOV CX,4
LEA SI,MULCND+3 LEA DI,PRODUCT+4
AND MULPLR,0FH ; ASCII码转BCD码 A30: MOV AL,[SI]
AND AL,0FH ; ASCII码转 BCD码 MUL MULPLR
AAM ; BCD码乘调整
ADD AL,[DI]
AAA ; BCD码加法调整 OR AL,30H MOV [DI],AL DEC DI
MOV [DI],AH DEC SI LOOP A30
OR BYTE PTR [DI],30H
13. 请编写完整程序在一个升序字节数组中查找数N,找到后将此数从数
组中删除,并使得CF=0;没找到返回CF=1。数组的首地址和末地址为A_HEAD和A_END。 答:
DATA SEGMENT PARA 'DATA' A_HEAD DW ?
BUFF DB 1,2,3,4,5,6,7,8,9,0 COUNT EQU $-BUFF A_END DW ? N DB 4 DATA ENDS
CODE SEGMENT PARA 'CODE'
ASSUME CS:CODE, DS: DATA START: MOV AX,DATA MOV DS,AX MOV SI,OFFSET BUFF MOV A_HEAD,SI MOV AL,COUNT CBW
ADD AX,SI MOV DI,AX DEC DI
MOV A_END,DI MOV AL,N
LP: CMP AL,[SI] JNE NEXT JMP DEL
NEXT: INC SI ;考察下一个数据 CMP SI,DI
JBE LP ; 循环 STC ;CF<-1 JMP EXIT
DEL: CLC ;CF<-0 CMP SI,DI
JNE DELDATA
DEC A_END ; 删除的是最后一个元素 JMP EXIT
DELDATA:MOV CX,DI SUB CX,SI
LP2: MOV AL,[SI+1] ; 该循环将SI+1 到DI位置的数据移动到 SI 到DI-1 的位置
MOV [SI],AL INC SI LOOP LP2
DEC A_END ; 调整结尾指针 EXIT: MOV AH,4CH INT 21H CODE ENDS END START
14. 请编写完整程序从键盘读取字符,如果是十进制的‘0’~‘9’则在
屏幕上输出该数的8位二进制码,并将数字依次存放到BUF开头的数组中,如果读入的字符是’Q’或者‘q’,则程序退出,其他情况在屏幕上打印“You must input 0~9, or ‘q’ or ‘Q’”。 (如输入的字符是‘9’,则输出“00001001”)
提示:语句“You must input 0~9, or ‘q’ or ‘Q’”定义成以’$’结尾的字符串,键盘输入和屏幕输出,请参看教材后的DOS功能调用(int 21h)的相关功能。
输出一个数的2进制形式应该从最高位开始输出,可以将此段程序定义成一个过程。
答: ;'\。 DATA SEGMENT PARA 'DATA'
sentence db 'You must input 0~9, or \ buf db 20 dup(?) DATA ENDS
CODE SEGMENT PARA 'CODE'
ASSUME CS:CODE, DS: DATA
MAIN PROC FAR PUSH DS MOV AX,0 PUSH AX
MOV AX,DATA MOV DS,AX MOV SI,0
DOIT: MOV AH,1 INT 21H CMP AL,'Q' JNE NEXT JMP EXIT
NEXT: CMP AL,'q' JNE NEXT1 JMP EXIT
NEXT1: SUB AL,30H JC PRINT JMP NEXT2
PRINT: MOV AH,9 LEA DX,SENTENCE INT 21H CALL CRLF JMP DOIT
NEXT2: CMP AL,9 JG PRINT MOV CX,8 CALL CRLF
PRNDATA:SHL AL,1 JC IS1 MOV DL,'0' JMP OUTBIN IS1: MOV DL,'1' OUTBIN: PUSH AX MOV AH,2 INT 21H POP AX
LOOP PRNDATA CALL CRLF JMP DOIT
EXIT: RET
MAIN ENDP
CRLF PROC NEAR ;回车换行 PUSH AX PUSH DX
MOV DL, 0DH ;回车 MOV AH, 2
INT 21H ; 输出DL中的字符 MOV DL, 0AH ; 换行 MOV AH, 2
INT 21H ; 输出DL中的字符 POP DX POP AX RET CRLF ENDP CODE ENDS END MAIN
正在阅读:
汇编语言补充作业和答案12-23
航空工程英语基础06-21
我的中国梦作文500字02-05
2018精选超市端午节活动方案与2018系党支部工作计划汇编 doc03-19
宏观经济学论文11-17
特岗教师考试(教材大纲资料)背记版06-03
DQ2.13建筑照明通电试运行记录11-15
无镀铜焊丝生产工艺05-11
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 汇编语言
- 补充
- 作业
- 答案
- 2016年上半年湖北省初级统计师《统计基础》:会计凭证考试试卷
- 苏教版 小学六年级上册数学第一单元长方体、正方体教学设计(含教学反思)
- 配套K12高中化学专题2化学反应与能量转化第一单元化学反应速率与反应限度第1课时化学反应速率学案苏教
- 福建省三明市四地六校2019届高二上学期联考协作卷数学(文)试题 Word版含答案
- 创业能力试卷1(答案)
- 中国传统创新思想及其方法简述
- CMS项目文档,java,需求分析
- 食品工艺学复习重点
- 市场监督管理局2018年打击传销工作总结
- 工会2017上半年工作总结
- 2016年下半年西藏城市规划师考试管理法规:建设工程规划管理的任务试题
- (各电机设计软件对比)电磁场软件对比优势
- 2017年增强制造业核心竞争力重点领域关键技术产业化-智能型特大集装箱船项目资金申请报告(编制大纲)
- 学校安全教育培训制度
- 2018-2019年初中数学天津中考模拟考试试题含答案考点及解析
- 人教版一年级语文上册生字表笔顺表(Word)格式 - 图文
- 全真模拟演练三
- 渠口小学教师政治学习和业务学习制度
- 新课标下的语法教学案例 - 图文
- 最新2019一级注册消防工程师完整考试题库500题(含答案)