汇编语言复习知识点(郑晓薇版)
更新时间:2023-09-29 03:11:01 阅读量: 综合文库 文档下载
- 汇编语言答案郑晓薇推荐度:
- 相关推荐
1.9 写出下列算式的二进制运算结果,标志位CF、SF、ZF、OF分别是什么值?
(1)56+63 (2)83-45 (3)-74+29 (4)-92-37 答案:
(1) 56+63=01110111B,CF=0,SF=0,ZF=0,OF=0
(2) 83-45=00100110B,CF=0,SF=0,ZF=0,OF=0
(3) -74+29=11010011B,CF=0,SF=1,ZF=0,OF=0
(4) -92-37=01111111B,CF=1,SF=0,ZF=0,OF=1
2.13 有一个32K字节的存储区,首地址是3302:5AC8H,写出其首单元和末单元的物理地址。 答案:
首单元的物理地址=38AE8H,末单元的物理地址=38AE8H+7FFFH=40AE7H
2.15 存储单元地址和内容表示如下,请画出存储单元存放形式。
(1) (1280A)=3456H (2) (20021H)=4DH (3) (33450H)=37A520D1H
2.16 根据逻辑地址计算出物理地址,并解释逻辑地址与物理地址的对应关系。
(1) 2389:3DE9H (2) 1230:EC92H (3) 14D9:C202H 答案:
(1)物理地址=27679H (2) 物理地址=20F92H (3) 物理地址=20F92H
(2)和(3)的物理地址是一样的。说明逻辑地址不唯一,多个逻辑地址可对应到同一个物理单元上。
2.17 给出段地址和偏移地址如下,计算出对应的物理地址。
(CS)=54C3H,(ES)=2569H,(DS)=1200H,(SS)=4422H,
(BX)=5678H,(SP)=9945H,(IP)=0E54H,(DI)=63B1H 答案:
代码段CS:IP的物理地址=55A84H 堆栈段SS:SP的物理地址=4DB65H
数据段DS:BX的物理地址=17678H 附加段ES:DI的物理地址=2BA41H
3.2 分别写出与数据有关的7种寻址方式并举例说明。
3.3 已知(BX)=1290H,(SI)=348AH,(DI)=2976H,(BP)=6756H,(DS)=2E92H,(ES)=4D82H,(SS)=2030H,请指出下列指令的寻址方式,并求出有效地址EA和物理地址: MOV AX,BX MOV AX,1290H MOV AX,[BX] MOV AX,DS:[1290H] MOV AX,[BP] MOV [DI][BX],AX MOV ES:[SI],AX 查看正确答案
MOV AX,BX 源操作数为寄存器寻址,EA 无,物理地址 无
MOV AX,1290H 立即寻址,EA 无,物理地址 无 MOV AX,[BX] 寄存器间接寻址,EA=1290H, 物理地址=2FBB0H
MOV AX,DS:[1290H] 直接寻址,EA=1290H, 物理地址=2FBB0H
MOV AX,[BP] 寄存器间接寻址,EA=6756H, 物理地址=26A56H
MOV [DI][BX],AX 目的操作数为基址变址寻址,
EA=3C06H, 物理地址=32526H
MOV ES:[SI],AX 寄存器间接寻址,EA=348AH, 物理地址=50CAAH
3.7 请指出下列指令的错误: MOV AX,[CX] MOV AL,1200H MOV AL,BX MOV [SI][DI],AX MOV ES:[DX],CX MOV [AX],VALUE MOV COUNT,[SI] 答案:
MOV AX,[CX] 错。CX不能为间址寄存器 MOV AL,1200H 错。立即数超出8位寄存器范围 MOV AL,BX 错。两个操作数不匹配
MOV [SI][DI],AX 错。两个变址寄存器不能在一起 MOV ES:[DX],CX 错。DX不能为间址寄存器 MOV [AX],VALUE 错。AX不能为间址寄存器 MOV COUNT,[SI] 错。两个操作数不能都是存储单元 3.9 写出用下列寻址方式将存储单元X中的第3个字取出,AX与其相加再放入Y单元的指令序列。
(1)直接寻址 (2)寄存器相对寻址 (3)基址变址 答案
(1) ADD AX,[X+4] MOV Y,AX (2) MOV BX,4 ADD AX,X[BX] MOV Y,AX (3) MOV BX,4 MOV SI,OFFSET X ADD AX,[BX+SI] MOV Y,AX
4.9 解释下列伪指令的作用:
(1) ASSUME CS:CODE,DS:DATA (2) END START (3) VALUE DW 12,35,-6 (4) STRING DB ‘INPUT:’ (5) MESS DB 5 DUP(?) (6) XX DD 12345678H (7) ORG 0320H (8) CONT EQU 2*3.14 4.10 根据题目,写出相关伪指令:
(1) 定义数据段DATA,并在数据段中定义两个字单元X、Y,初始值都是0
(2) 定义一个字符串SRING,保存’Computer’
(3) 定义有100个字节单元的COUNT数组,初始值均为空
(4) 用赋值伪指令定义PI为3.14
(5) 用类型操作符LABEL将VALUE单元定义为字节型 查看正确答案
(1) DATA SEGMENT X DW 0 Y DW 0 DATA ENDS
(2) STRING DB ’Computer’ (3) COUNT DB 100 DUP(?) (4) PI EQU 3.14
(5) VALUE LABEL BYTE
4.11 下列伪指令有错吗?如果有错,请指出错误原因: (1) X1 DB 35H,0,-80 (2) X2 DB 35,260,-1 (3) X3 DB 1234H
(4) X4 DW 100 (5) X5 DW 100(?) (6) X6 DD ‘AB’
查看正确答案
(1)对。(2)错。260超出了字节范围。(3)错。X3是字节型,1234H是字型,不匹配。 (4)对。(5)错。缺少DUP。(6)对。 4.12 写出下列指令的执行结果: TABLE DB 3,33,33 H (1) MOV AL,TABLE
(2) MOV AX,WORD PTR TABLE (3) MOV DX,OFFSET TABLE (4) MOV CL,TABLE+2 (5) MOV BX,SEG TABLE (6) MOV BX,TYPE TABLE (7) LEA DX,TABLE 查看正确答案
(1)AL=3。(2)AX=2103H。(3)DX=TABLE的偏移地址。(4)CL=33H
(5)BX=TABLE的段地址。(6)BX=1。(7)DX= TABLE的偏移地址。
4.24 编程序。将键盘输入的小写字母变为大写字母显示在屏幕上。 查看正确答案 .model small .code start:
mov ah,1 ;键盘输入 int 21h
sub al,20h ;变为大写 mov dl,al mov ah,2 int 21h mov ah,4ch int 21h end start
4.26 编写程序,建立一个0~9的平方根表,查表可得某数的平方根。 data segment
x db '0.000','1.000','1.414','1.732','2.000' db
'2.236','2.449','2.646','2.828','3.000' ;建立字符表
y db 5 dup(?) ;存放查到平方根 u db 3 ;要查的数 data ends code segment
assume cs:code,ds:data start:
mov ax,data mov ds,ax mov al,u ;要查的数 mov cl,5 mul cl ;u*5=15(号单元开始)
mov ch,0 mov bx,ax ;地址保存到bx mov si,0 let1:
mov al,x[bx] ;取出平方根数字 mov y[si],al ;存入y inc si inc bx loop let1 ;循环取出5次 mov ah,4ch int 21h code ends end start
4.27 编写查表程序。建立一个班级姓名表,给出学号,可显示出其姓名。
.model small .data
x1 db 'zhang yan $' ;姓名为10个字符宽度
x2 db 'li li $' x3 db 'wang lan $' x4 db 'zhao xue $' x5 db 'li jiang $' u db 3 ;要查的学号 .code start:
mov ax,@data mov ds,ax mov al,u ;给出学号 mov cl,10 mul cl ;u*10=30(号单元开始) mov ah,0 mov dx,ax ;地址保存到dx mov ah,9 ;9号功能显示字符串 int 21h mov ah,4ch
int 21h end start
无符号数比较转移指令包括4种指令: JB 低于则转移 (A<B) 测试条件:CF =1且ZF=0 JBE 低于等于则转移 (A≤B) 测试条件:CF=1或ZF=1 JA 高于则转移 (A>B) 测试条件:CF=0且ZF=0 JAE 高于等于则转移 (A≥B) 测试条件:CF=0或ZF=1
带符号数的最高位为符号位,因此带符号数的数值与无符号数不一样 JL 小于则转移 (A<B) 测试条件:SF≠OF且ZF=0 JLE 小于等于则转移 (A≤B) 测试条件: SF≠OF或ZF=1 JG 大于则转移 (A>B) 测试条件:SF=OF且ZF=0 JGE 大于等于则转移 (A≥B) 测试条件:SF=OF或ZF=1
SAL算术左移指令 SAR算术右移指令 SHL逻辑左移指令 SHR逻辑右移指令 ROL循环左移指令 ROR循环右移指令
RCL带进位的循环左移指令 RCR带进位的循环右移指令
5.14 指出下列指令的错误所在。 (1) AND [SI],3 (2) SUB DS,AX (3) PUSH 5 (4) OR 80H,AL (5) CMP [BX],TABLE (6) ROL AL,3 查看正确答案
(1) 目的操作数是存储单元时,要用PTR伪操作指出单元的属性 (2)DS段寄存器使用非法 (3)立即数使用非法 (4) 目的操作数不允许是立即数 (5) 两个操作数不允许都是存储单元 (6)移位次数超过1要用CL表示。 5.17 简述操作系统对可执行程序的加载和执行过程。
【程序的加载】操作系统进行了如下操作: (1)将用户程序调入内存
(2)建立256字节的程序段前缀PSP区 (3)用DS和ES寄存器保存PSP区的段地址 (4)在PSP后面定义代码段,将程序代码紧接着PSP存放 (5)程序代码所在的段地址放入CS寄存器,偏移地址0000H放入IP寄存器 (6)如果用户程序定义了数据段,则在PSP和代码段之间预留部分空间 (7)设置堆栈区的段地址SS寄存器和堆栈指针 (8)将控制权交给用户程序,开始执行。 5.27 分支程序设计。完成如下公式的计算,请写出程序。
(X+3)/2 X>0 Y= 0 X=0 X×4 X<0 查看正确答案
分支程序设计。完成如下公式的计算,请写出程序。 (X+3)/2 X>0 Y= 0 X=0 X×4 X<0 程序如下: DATA SEGMENT X DB 23 Y DB ? DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,X CMP AL,0 JE SUB2 JG SUB1 MOV CL,2 SAL AL,CL JMP SHORT SUB2 SUB1:ADD AL,3 SAR AL,1
SUB2: MOV Y,AL MOV AH,4CH INT 21H CODE ENDS END START
5.29 字数组M中有10个数据,分类统计其中正数、负
数、0的个数,分别存入POSI、NEGA、ZERO 单元。【可能会把题目改成求奇数、偶数的数目】
查看正确答案
字数组M中有10个数据,分类统计其中正数、负数、0的个数,分别存入POSI、NEGA、ZERO 单元。 程序如下: DATA1 SEGMENT
M DW 21,-34,32,112,-324,0,76,0,48,50 POSI DW ? NEGA DW ? ZERO DW ? DATA1 ENDS CODE1 SEGMENT
ASSUME CS: CODE1,DS:DATA1 START: MOV AX,DATA1 MOV DS,AX MOV CX,10 LEA SI,M
AGAIN: CMP WORD PTR [SI],0 JL LOWER JE EQUAL INC POSI JMP LPP1
LOWER: INC NEGA JMP LPP1
EQUAL: INC ZERO LPP1: ADD SI,2 DEC CX JNZ AGAIN MOV AH,4CH INT 21H CODE1 ENDS END START
6.14 源串STRG1和目的串STRG2分别放在数据段和附加段中,请写出含有各种段定义的程序段,完成将STRG1传送到STRG2的功能。
DATAS SEGMENT
STRG1 DB 'NEUQ COMPUTER SCIENCE AND TECHNOLOGY' STRG DB ? DATAS ENDS
EXTRAS SEGMENT STRG2 DB 30 DUP(?) EXTRAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码 STACKS ENDS
CODES SEGMENT ASSUME
CS:CODES,DS:DATAS,SS:STACKS,ES:EXTRAS START:
MOV AX,DATAS MOV DS,AX
MOV AX,EXTRAS MOV ES,AX LEA SI,STRG1 LEA DI,STRG2
MOV CX,STRG-STRG1 CLD
REP MOVSB MOV AH,4CH INT 21H CODES ENDS END START
6.17写程序段。在长度为N的字数组VALUE中统计负数
的个数并保存到AX中。 查看正确答案
写程序段。在长度为N的字数组VALUE中统计负数的个数并保存到AX中。
DATAS SEGMENT
value db 1,-2,3,5,-8,-3,-2,-7 N db ? DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码 STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS START:
MOV AX,DATAS MOV DS,AX mov cx,N-value lea bx,value mov ax,0 s:
cmp byte ptr [bx],0 jns t inc ax t: inc bx
loop s
MOV AH,4CH INT 21H CODES ENDS END START
6.20 编程。在FOUND字数组中找出最小数存入MIN单元。
DATAS SEGMENT
FOUND db 1,3,5,7,9,-1,-3,-5,0,9 MIN db ? DATAS ENDS
STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS START:
MOV AX,DATAS MOV DS,AX lea bx,FOUND mov cx,min-found let0:
cmp MOV AH,4CH INT 21H CODES ENDS END START
【冒泡算法】的主要思想是从第一个元素开始,依次对两个相邻的元素进行比较,如果第一个元素比第二个大,则两数交换位置,第一遍N-1次比较之后,最大的数排在最后;再做第二遍N-2次比较,比较出第二大的数……;以此类推,最多进行N-1遍比较,所有的数按从小到大升序排序。 将字数组PART按升序排序。 设计思路:
(1)用两条LOOP指令实现双重循环时,对CX寄存器有冲突。采用PUSH CX指令将外循环的CX值入栈保存,内循环的LOOP结束后,再将外循环的CX恢复; (2)用相对寄存器寻址取出两数进行比较。 程序如下:
;6-5.asm 将字数组part按升序排序。 data segment
part dw 15,32,6,-27,8 sign dw ? data ends
正在阅读:
汇编语言复习知识点(郑晓薇版)09-29
三个不发生体会03-28
余热锅炉安装施工方案12-07
【最新】关于高一历史教学工作总结锦集九篇08-21
上海张江集电港B区4-15地块项目环境影响报告书简本10-24
安徽省巢湖市2017-2018学年高一物理下学期第二次月考试卷(含解04-25
关于爬山的作文600字02-05
漂浮的鸡蛋作文200字07-04
假如我成了老师作文600字07-04
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 汇编语言
- 知识点
- 复习
- 酒店会计实习心得范文
- 城步水木华庭可研
- 2010-2011学年课外活动计划
- 19341 电工电子技术-部分习题答案
- NOKIA基站维护手册 - 2007-08-13-01-10-36-140
- 小学数学奥数基础教程(四年级)目30讲全
- 社会主义从空想到科学的发展下试题答案
- 一、项目名称:复合材料腰梁及抗浮锚杆的研究应用
- 上海交通大学建筑学系建筑学专业二年级秋季学期建筑设计及原理(1) - 任务书六
- 古诗《元日》课堂实录
- 煤质分析题库
- 人教部编版:语文八年级上册(2017部编版)第13课《背影》教案
- 实验一 蛋白质含量测定方法的研究
- 药品工艺回顾性验证方案 - 图文
- 上海大学研究生毕业生就业推荐表
- 淤尖中学2015年初三英语模拟试卷
- 人事管理系统Java课程设计报告 - 图文
- 华南理工大学2005年考研电磁场与电磁波试题
- 中国国防历史的启示
- 第二章 操作系统结构A - 图文