汇编语言3

合集下载

汇编语言3(清华大学沈美明).

汇编语言3(清华大学沈美明).
3.3.6、处理器控制指令
用途:用于控制处理器的操作。
分类: 标.1、标志位操作指令之CLC/STC/CMC
功能:用于控制进位标志CF的指令
指令 CLC STC CMC
功能 CF=0 CF=1 CF=/CF
3.3.6.1 、标志位操作指令之CLD/STD
功能:用于控制方向标志DF的指令
指令 CLD STD
功能 DF=0 DF=1
3.3.6.1 、标志位操作指令之CLI/STI
功能:用于控制中断标志IF的指令
指令 CLI STI
功能 IF=0 IF=1
3.3.6.2 、微处理器协调指令之HLT
功能:使程序停止执行,进入暂停状态。 格式: HLT 结束HLT的情况: 1、系统复位 2、NMI中断请求有效 3、IF=1且INTR 中断请求有效 注意:不影响标志位
中断结束后执行下面程序
3.3.6.2 、微处理器协调指令之WAIT
功能:使程序停止执行,进入暂停状态。 格式: WAIT 结束WAIT的情况: TEST 引脚=0 注意:不影响标志位 WAIT期间,CPU不 执行任何操作,直到出现 外部中断,进入中断服务 程序。中断返回后仍然回 到WAIT指令。
3.3.6.2 、微处理器协调指令之LOCK
功能: 禁止其它微处理器使用总线 格式: LOCK指令 停止LOCK的情况: 指令不再使用LOCK前缀 注意:不影响标志位
3.3.6.2 、微处理器协调指令之NOP
功能:空操作 格式: NOP 注意:不影响标志位 执行结束后,执行下一条指令

汇编语言 第三版

汇编语言  第三版

·汇编语言是一种符号编程语言,这些符号构成汇编指令或伪指令,汇编语言程序就是由指令和伪指令构成的。

·汇编语言指令的一般格式:[名字][操作码][操作码][操作数][注释]·CPU:CPU是执行程序的部件。

·内存:RAM是存储程序和数据的部件。

·CS,DS,ES,SS寄存器的功能:段寻址寄存器。

·子程序的作用:把多次引用的相同程序段编成一个独立的程序段,当需要执行这个程序段的时候,可以用Call指令调用。

·BIOS屏幕控制、键盘控制、鼠标控制的中断调用分别是:int 10h int 16h int 33h。

·DOS int 21提示一个字符串:AH=09H。

·打开和关闭扬声器的指令:MOV AL,11B OUT 61H,AL和MOV AL,00 OUT 61H,AL.入栈和出栈的指令格式:PUSH ...16位寄存器和pop (16)位寄存器·数据总线的多少取决于内存单元的大小,地址总线的多少取决于内存单元的多少。

·如果在汇编语言源程序中需要多次用到同一段程序,则可以将这段程序定义成一条指令,称为宏指令,一个宏定义包含3个部分,宏名、宏伪指令和宏体,宏是汇编语言的一个特点,避免了代码的重复,并使源程序简洁易读。

①DATA SEGMENTBUF DB 'HelloWorld ! This is ASM program.$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA DX,BUF MOV AH,09 INT 21HMOV AH,4CHINT 21H CODE ENDS END START②line macro x1,y1,x2,y2,color local xian1,l1,l2mov cx,x1mov dx,y1mov ah,0chmov al,color;0fhmov bh,0xian1:int 10hpush cxmov cx,9999loop $pop cxcmp cx,x2je l1inc cxcmp cx,x2jne xian1l1:cmp dx,y2je l2inc dxcmp dx,y2jne xian1l2:inc dxendmcodes segmentstart:mov ah,0mov al,12hint 10hmov ah,0bhmov bh,0mov bl,3int 10h;---------------line 200,20,400,50,0fh ;-------------------line 400,20,400,250,0fh ;-------------------line 200,250,400,250,0fh ;--------------------- line 200,20,200,250,0fh mov ah,07hint 21hmov ah,4chint 21hcodes endsend start。

汇编语言第三版课程设计

汇编语言第三版课程设计

汇编语言第三版课程设计一、设计目的和意义汇编语言是计算机科学中必备的基础知识,通过学习汇编语言可以深入理解计算机硬件的运作机理和指令的执行过程,为高级编程语言的学习奠定了坚实的基础。

本次课程设计旨在实现一个简单的汇编程序,通过实践操作、编写程序来掌握汇编语言的基本知识和操作。

二、设计内容1. 思路概述本次课程设计实现一个简单的汇编程序,包括以下3个模块:1.输入模块:通过用户输入来获取数据,包括运算符、操作数等;2.运算模块:对输入的数据进行处理,并输出运算结果;3.输出模块:将结果输出到屏幕上。

2. 输入模块设计1.定义变量:input db 10 ; 输入的运算符或操作数len db 0 ; 记录输入的运算符或操作数的长度2.获取用户输入:mov ah, 00hint 16h ; 等待用户输入的运算符或操作数mov [input+len], alinc len3. 运算模块设计1.定义变量:num1 db 0 ; 存放第一个操作数num2 db 0 ; 存放第二个操作数operator db 0 ; 存放运算符result db 0 ; 存放运算结果2.提取运算符和操作数:mov si, lenmov ah, 0mov [operator], byte[input]add si, 1mov al, byte [input+1]sub al, '0'mov [num1], aladd si, 1mov al, byte [input+2]sub al, '0'mov [num2], al3.进行运算:cmp [operator], '+'je addcmp [operator], '-'je subadd:mov al, [num1]add al, [num2]mov [result], aljmp donesub:mov al, [num1]sub al, [num2]mov [result], aldone:4. 输出模块设计mov ah, 02h ; 设置字符属性mov dl, [result] ; 输出计算结果add dl, '0'int 21h ; 输出结果三、总结本次课程设计通过实现一个简单的汇编程序,掌握了汇编语言的基本知识和操作。

汇编语言第3-4章平时练习题

汇编语言第3-4章平时练习题

3.知识点:0403(汇编语言程序格式) *汇编语言源程序经汇编程序汇编后产生的文件的扩展名是(B)。

选项A)MAP选项B)OBJ选项C)ASM选项D)EXE4.知识点:0403(汇编语言程序格式) *汇编语言的什么文件经链接(LINK)后产生可执行文件?(D)选项A)EXE选项B)OBJ选项C)MAP选项D)LST7. 知识点:0401(汇编程序功能) *汇编语言源程序是(A)程序。

选项A)不可直接执行的选项B)经连接后就可直接执行的选项C)经汇编程序汇编后就可执行的选项D)可直接执行的14知识点:0302(程序占有的空间和执行时间) **如果指令的运算结果为0,则(C)标志位为1。

选项A)SF选项B)CF选项C)ZF选项D)OF15知识点:0302(程序占有的空间和执行时间) **如果指令的运算结果中有奇数个1,则(C)标志位为0。

选项A)OF选项B)CF选项C)PF选项D)SF16. 知识点:0301(80x86的寻址方式) *IBM PC机的内存是按(D)是编址的。

选项A)位选项B)双字选项C)字选项D)字节23知识点:0301(80x86的寻址方式80x86的寻址方式) **如果内存的某一单元的物理地址为12345H。

则它的逻辑地址为(C):0345H。

选项A)0120H选项B)12000H选项C)1200H选项D)0012H24知识点:0301(80x86的寻址方式80x86的寻址方式) ***如果一个字变量中存放16个字,该字变量的起始地址为1000H:2000H,则该字变量数据区中的最末一个字单元的物理地址为( D)。

选项A)12020H选项B)12000H选项C)1201FH选项D)1201EH25知识点:0301(80x86的寻址方式80x86的寻址方式) **设22000H、22001H单元分别存放的数据为12H、34H,若要读取22000H字单元中的数据,此时读出的数据是(A)。

王爽《汇编语言》(第三版)实验10解析

王爽《汇编语言》(第三版)实验10解析

王爽《汇编语⾔》(第三版)实验10解析1、显⽰字符串assume cs:codedata segmentdb 'welcome to masm!',0data endscode segmentstart: mov dh,8mov dl,3mov cl,2mov ax,datamov ds,axmov si,0call show_strmov ax,4c00hint 21hshow_str: push dxpush cxpush si ; 保护⼦程序寄存器中⽤到的寄存器; 由于主程序的限定; 这⾥由CPU⾃动为我们分配栈空间mov di,0 ;显⽰缓存区中的偏移量mov bl,dhdec bl ; bl-1才是真正的⾏,因为⾏号从0开始计数mov al,160mul bl ; 每⾏160字节⽤⾏数*每⾏偏移量得到⽬标⾏的偏移量mov bx,ax ; mul bl之后,乘积存储在ax中,这⾥要转存⼊bx中mov al,2 ; 列的偏移量为2,两个字节代表⼀列!!!mul dl ; 与⾏偏移量同理add bl,al ;将列偏移量与⾏偏移量相加,得到指定位置的偏移量。

mov ax,0b800hmov es,ax ;指定显⽰缓存区的内存位置mov al,cl ; 由于后⾯jcxz语句的判断要⽤到cx,所以我们要将; cl(颜⾊)先存下来。

s: mov ch,0mov cl,ds:[si] ;⾸先将当前指向字符串的某个字符存⼊cx中jcxz ok ; 如果cx为0,则转移到ok标号执⾏相应代码mov es:[bx+di],cl ;将字符传⼊低地址mov es:[bx+di+1],al ; 将颜⾊传⼊⾼地址add di,2 ; 列偏移量为2inc si ; 字符串的偏移量为1loop s ; 不为0,继续复制ok: pop dxpop cxpop si ; 还原寄存器变量ret ; 结束⼦程序调⽤code endsend start2、解决除法溢出的问题这⾥要注意,把⼀个数放在了dx,⾼位寄存器中,那么就相当于65536。

汇编语言第三章答案

汇编语言第三章答案

3.1 给定(BX)=637DH,(SI)=2A9BH,位移量D=7237H,试确定在以下各种寻址方式下的有效地址是什么?(1) 立即寻址(2) 直接寻址(3) 使用BX的寄存器寻址(4) 使用BX的简接寻址(5) 使用BX的寄存器相对寻址(6) 基址变址寻址(7) 相对基址变址寻址答:(1) 操作数在指令中,即立即数;(2) EA=D=7237H;(3) 无EA,操作数为(BX)=637DH;(4) EA=(BX)=637DH;(5) EA=(BX)+D=0D5B4H;(6) EA=(BX)+(SI)=8E18H;(7) EA=(BX)+(SI)+D=1004FH;超过了段的边界,最高进位位丢失,因此EA=004FH。

3.2 试根据以下要求写出相应的汇编语言指令(1) 把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中。

(2) 用寄存器BX和SI的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中。

(3) 用寄存器BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和(CX)相加,并把结果送回存储器中。

(4) 用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回存储单元中。

(5) 把数0B5H与(AL)相加,并把结果送回AL中。

答:(1) ADD DX, BX(2) ADD AL, [BX][SI](3) ADD [BX+0B2H], CX(4) ADD WORD PTR [0524H], 2A59H(5) ADD AL, 0B5H3.3 写出把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令。

要求使用以下几种寻址方式:(1) 寄存器间接寻址(2) 寄存器相对寻址(3) 基址变址寻址答:(1) MOV BX, OFFSET BLOCKADD BX, (6–1)*2MOV DX, [BX](2) MOV BX, OFFSET BLOCK 改为:MOV BX, (6-1)*2MOV DX, [BX+(6–1)*2] 也可MOV DX, BLOCK[BX](3) MOV BX, OFFSET BLOCKMOV SI, (6–1)*2MOV DX, [BX][SI]3.4 现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列各条指令执行完后AX寄存器的内容。

汇编语言(微机)第三章

汇编语言(微机)第三章
21
汇编语言源程序的格式
一般情况下,定位类型、组合类型和类别说明可以 不用。 注意:SEGMENT和ENDS语句必须成对使用。 例:定义一数据段DATA
DATA SEGMENT A DB '1234' B DW 12H
DATA ENDS
22
汇编语言源程序的格式
(2)偏移地址定位语句 ORG 格式:ORG 数值表达式 功能:指定在它之后的程序段或数据块所存放的起始地 址的偏移量。
SUB1: ?
RESU: ?

31
汇编语言源程序的格式
④ 用DUP重复因子初始化一个数据区
格式:N DUP (表达式)
?、数值、
数值表达式
重复次数 重复装入的内容
字符等
例1: DA1 DB 2 DUP(0) DA2 DB 2 DUP(‘AB’) DA3 DW 2 DUP(1)
DA1
00
00
DA2
41
LOP: ADD AL,[BX] ADC AH,0 INC BX LOOP LOP MOV [DI] ,AX MOV AH ,4CH INT 21H
CODE ENDS END START
9
汇编语言源程序的格式
汇编语言源程序的格式
二、指令性语句 [标号:] 操作码 [操作数] [;注释项]
操作码:指明操作的性质,说明计算机要执行的具体操 作。用助记符表示。
第三章:8086汇编语言程序设计
主讲教师:范新民
整理ppt
1
8086汇编语言程序设计
1 3.2.1 汇编语言源程序的格式 2 3.2.2 常量、标识符和表达式 3 3.2.3 指示性语句 4 3.2.4 指令性语句 5 3.2.5 宏指令

【汇编语言第3版】第7章 循环指令及循环结构程序设计

【汇编语言第3版】第7章  循环指令及循环结构程序设计

初始化部分
工作部分 修改部分 控制部分 结尾部分
6.2.2循环程序的结构
第6章 循环指令与循环结构程序设计
汇 编 语 言 程 序 设 计
(1)先执行后判断(非0次循环结构) (2)先判断后执行(0次循环结构)
初始化部分 工作部分 控制部分 修改部分 工作部分 控制部分 修改部分 结尾部分 结尾部分
取数 Y
结束
=0?
N 移位 CF=0? Y N 计数加1
第6章 循环指令与循环结构程序设计
3.用逻辑变量控制循环
含义:用转移指令来判断循环条件 应用场合:控制转入不同的循环支路 方法:把逻辑变量送入寄存器中,以逻辑变量各位的状态作为执行某段
汇 编 语 言 程 序 设 计
程序的标志
按逻辑变量控制循环程序设计举例
第6章 循环指令与循环结构程序设计
汇 编 语 言 程 序 设 计
【例6-9】在以BUF为起始地址的内存中放有若干单字节无符号数,假定逻辑变量 的长度为一个字节,它的D0 ~ D7 位对应着BUF ~ BUF+7单元内容的运算。某位为 0,则将相应单元内容的D7位复制到D6位,其他位不变;某位为1,则将相应单元 内容之高低四位互换。假定逻辑变量的值是10010101
汇 编 语 言 程 序 设 计
第6章 循环指令与循环结构程序设计
6.3 多重循环程序设计
含义:指循环体内还有循环,也就是循环嵌套 注意:(1) 不允许循环结构交叉 (2)转移指令只能从循环结构内转出或可在同层循环内转移
汇 编 语 言 程 序 设 计
多重循环程序设计应用举例
第6章 循环指令与循环结构程序设计
第6章 循环指令与循环结构程序设计
本章主要教学内容

汇编语言--操作数的寻址方式(三)

汇编语言--操作数的寻址方式(三)

汇编语⾔--操作数的寻址⽅式(三)三、操作数的寻址⽅式操作数是指令或程序的主要处理对象。

如果某条指令或某个程序不处理任何操作数,那么,该指令或程序不可能有数据处理功能。

在CPU的指令系统中,除NOP(空操作指令)、HLT(停机指令)等少数指令之外,⼤量的指令在执⾏过程中都会涉及到操作数。

所以,在指令中如何表达操作数或操作数所在位置就是正确运⽤汇编指令的⼀个重要因素。

在指令中,指定操作数或操作数存放位置的⽅法称为寻址⽅式。

操作数的各种寻址⽅式是⽤汇编语⾔进⾏程序设计的基础,也是本课程学习的重点之⼀。

微机系统有七种基本的寻址⽅式:⽴即寻址⽅式、寄存器寻址⽅式、直接寻址⽅式、寄存器间接寻址⽅式、寄存器相对寻址⽅式、基址加变址寻址⽅式、相对基址加变址寻址⽅式等。

其中,后五种寻址⽅式是确定内存单元有效地址的五种不同的计算⽅法,⽤它们可⽅便地实现对数组元素的访问。

另外,在32位微机系统中,为了扩⼤对存储单元的寻址能⼒,增加了⼀种新的寻址⽅式——32位地址的寻址⽅式。

为了表达⽅便,我们⽤符号“(X)”表⽰X的值,如:(AX)表⽰寄存器AX的值。

1、⽴即寻址⽅式操作数作为指令的⼀部分⽽直接写在指令中,这种操作数称为⽴即数,这种寻址⽅式也就称为⽴即数寻址⽅式。

⽴即数可以是8位、16位或32位,该数值紧跟在操作码之后。

如果⽴即数为16位或32位,那么,它将按“⾼⾼低低”的原则进⾏存储。

例如:MOV AH, 80H ADD AX, 1234H MOV ECX, 123456HMOV B1, 12H MOV W1, 3456H ADD D1, 32123456H其中:B1、W1和D1分别是字节、字和双字单元。

以上指令中的第⼆操作数都是⽴即数,在汇编语⾔中,规定:⽴即数不能作为指令中的第⼆操作数。

该规定与⾼级语⾔中“赋值语句的左边不能是常量”的规定相⼀致。

⽴即数寻址⽅式通常⽤于对通⽤寄存器或内存单元赋初值。

图3.1是指令“MOV AX, 4576H”存储形式和执⾏⽰意图。

汇编语言第3章 指令系统和寻址方式

汇编语言第3章 指令系统和寻址方式

5.寄存器相对寻址方式(register relative addressing)
EA=基址(base) 或变址( index)+偏移量 (displacement)
基址寄存器有:BX,BP 变址寄存器有:SI,DI 注:默认段是数据段和堆栈段
(SI) 物理地址=(DS)*16+(BX)+displacement
(DI) =(SS)*16+(BP)+ (SI)+displacement (DI)
例:mov AX,ARRAY[BX][DI] (DS)=1000H,(BX)=1200H, (DI)=1000H, ARRAY=1000H 物理地址=DS*16+(BX)+(DI)+ARRAY =DS*16+1200+1000+1000=13200H 若:(13200)=34H,(13201)=12H 则,(AX)=1234H 允许段超越。 例:mov AL,ES:ARRAY[BX][DI] 用途:处理成组数据(举例说明)
2.段内间接寻址(intrasegment indirect addressing) (IP)新=EA=寄存器或存储单元的内容 寄存器:所有寄存器寻址方式可用的寄存器 存储单元:所有存储单元寻址方式均适用 例:JMP SI (IP)=(SI) JMP WORD PTR VAR或简写JMP VAR (DS)=1000H,VAR=2000H 存储单元的物理地址=(DS)*16+VAR=12000H (12000H)=1234H 则,(IP)新=1234H
4.寄存器间接寻址方式(register indirect addressing)
EA=基址(base) 或变址( index) 基址寄存器有:BX,BP 变址寄存器有:SI,DI 注:默认段是数据段和堆栈段 (SI) 物理地址=(DS)*16+(BX) (DI) =(SS)*16+(BP)

计算机组成原理与汇编语言3

计算机组成原理与汇编语言3
第三章 数值运算及运算器
补码加减运算
注意:求一个数的补码: 正数时,补码和原码相同; 负数时, 对原码除符号位外求反加1。
例1: 1: y = -0.0110 [y]补 = 1.1010 例2: y = 0.0111 [y]补 = 0.0111 [-y]补 = 1.1001 [-y]补 = 0.0110
第三章 数值运算及运算器
例(3):按位清
设:A=10010010,将A最高位清“0” 设:B=01111111 10010010 A ∧ 01111111 B ——————— 00010010 A
第三章 数值运算及运算器
例(4):按位测试
设:A=10010010,测A最高位是否为“1”; 设: B=10000000 10010010 ∧ 10000000 ——————— 10000000 结果不全为“0”,表明被测码的被测位为“1”。 结果为全“0”,表明被测码的被测位为“0”。
第三章 数值运算及运算器
(一)对进位公式的分析 设相加的两个n位操作数为: A=An-1An-2…Ai..A0 B=Bn-1Bn-2…Bi..B0
Ci+1 = AiBi + (Ai⊕Bi) Ci —— 进位逻辑表达式 设:Gi = AiBi —— 进位产生函数(Carry Generate Function)
二、溢出检测
1. 采用一个符号位判断
规则: • 当两个同号数相加,若所得结果符号与两数符号不同, 则表明溢出。 • 设An、Bn分别表示两个操作数的符号; Sn表示结果 的符号, 则有: 溢出=AnBnSn + AnBnSn
63+66=129 0,0111111 + 0,1000010 1,0000001

汇编语言程序设计教程(第3版 卜艳萍)参考答案

汇编语言程序设计教程(第3版 卜艳萍)参考答案

汇编语言程序设计教程(第3版卜艳萍)参考答案汇编语言程序设计教程(第3版)习题参考答案第1章汇编语言基础知识思考与练习1. 计算机系统分哪几个层次?简述计算机系统的硬件结构。

1)数字逻辑层 2) 微体系结构层 3) 指令系统层 4) 操作系统层 5) 汇编语言层 6) 高级语言层 7) 应用层硬件系统是指构成计算机系统的物理实体或物理装置。

它由控制器、运算器、存储器、输入设备和输出设备等部件构成。

2. 简述用汇编语言进行程序设计的必要性。

1) 程序要具有较快的执行时间,或者只能占用较小的存储容量。

例如,操作系统的核心程序段,实时控制系统的软件,智能仪器仪表的控制程序等。

2) 程序与计算机硬件密切相关,程序要直接、有效地控制硬件。

例如,I/O接口电路的初始化程序段,外部设备的低层驱动程序等。

3) 大型软件需要提高性能、优化处理的部分。

例如计算机系统频繁调用的子程序、动态连接库等。

4) 没有合适的高级语言或只能采用汇编语言的时候。

例如,开发最新的处理器程序时,暂时没有支持新指令的编译程序。

5) 汇编语言还有许多实际应用,例如分析具体系统尤其是该系统的低层软件、加密解密软件、分析和防治计算机病毒等。

3. 汉字编码主要分哪几类?每类的功能如何?汉字编码主要分为四类:汉字输入码、汉字交换码、汉字机内码和汉字字形码。

1) 为了能直接使用西文标准键盘进行输入,就必须为汉字设计相应的编码方法,即用西文标准键盘上的字母数字串表示汉字的编码。

目前,汉字输入编码方法主要有三种:数字编码、拼音编码和字形编码。

2) 汉字交换码:在不同汉字信息处理系统间进行汉字交换时所使用的编码,就是国标码。

无论采用哪种方法输入汉字,一旦输入到计算机中,必须采用统一的国标码标识每个汉字。

3) 汉字机内码是汉字在设备或信息处理系统内部最基本的表达形式,是在设备和信息处理系统内部存储、处理、传输汉字用的编码。

4) 字形编码也称为字模码,是用点阵表示的汉字字形代码,它是汉字的输出形式。

北语直属14秋《汇编语言》作业3满分答案

北语直属14秋《汇编语言》作业3满分答案

作业名称:14秋《汇编语言》作业3 出卷人:SA
作业总分:100 通过分数:60
起止时间:2015-1-20 10:02:32 至2015-1-20 13:10:00
学员姓名:yuchenggong 学员成绩:100
标准题总分:100 标准题得分:100
详细信息:
题号:1 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:5
内容:
与MOV BX,OFFSET V AR指令完全等效的指令是( ) 。

A、LEA BX,V AR
B、MOV BX,V AR
C、LDS BX,V AR
D、LES BX,V AR
标准答案:A
学员答案:A
本题得分:5
题号:2 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:3.33 内容:
图形:
A、(A)
B、(B)
C、(C)
D、(D)
标准答案:A
学员答案:A
本题得分:3.33
题号:3 题型:单选题(请在以下几个选项中选择唯一正确答案)本题分数:3.33 内容:
图形:
A、(A)
B、(B)
C、(C)
D、(D)
标准答案:B
学员答案:B。

汇编语言 第3章1 80x86的指令系统和寻址方式

汇编语言 第3章1 80x86的指令系统和寻址方式
– 4个段寄存器seg:
CS、DS、SS、ES
寄存器寻址指令
MOV AX,1234H MOV BX,AX ;AX←1234H ;BX←AX
寄存器寻址
3.1.4 存储器寻址方式
指令中给出操作数的主存地址信息(偏移
地址,称之为有效地址EA),而段地址在 默认的或用段超越前缀指定的段寄存器中
8086设计了多种存储器寻址方式
量之和,寄存器可以是BX、BP或SI、DI 有效地址=BX/BP/SI/DI+8/16位位移量
段地址对应BX/SI/DI寄存器默认是DS,对应BP
寄存器默认是SS;可用段超越前缀改变 MOV AX,[DI+06H]; mov ax,table[di] ;AX←DS:[DI+06H] MOV AX,[BP+06H] ;AX←SS:[BP+06H] 相对寻址
;AX←DS:[BX+SI+06H]
相对基址变址
位移量可用符号表示 同一寻址方式有多种表达形式
指令操作数的表达-寄存器
r8——任意一个8位通用寄存器
AH AL BH BL CH CL DH DL
r16——任意一个16位通用寄存器
AX BX CX DX SI DI BP SP
reg——代表r8或r16
(4)基址变址寻址方式
有效地址由基址寄存器(BX或BP)的内容加上
变址寄存器(SI或DI)的内容构成:
有效地址=BX/BP+SI/DI
段地址对应BX基址寄存器默认是DS,对应BP
基址寄存器默认是SS;可用段超越前缀改变 MOV AX,[BX+SI] ;AX←DS:[BX+SI] MOV AX,[BP+DI] ;AX←SS:[BP+DI] MOV AX,DS:[BP+DI] ;AX←DS:[BP+DI]

汇编语言指令_3

汇编语言指令_3

汇编语⾔指令_38088指令系统总结预备知识:符号含意、数据传送原则符号含意符号含意opr操作数src源操作数dst⽬的操作数mem存储器im⽴即数seg段寄存器reg通⽤寄存器EA偏移地址PA物理地址nn直接地址DISP8:8位偏移地址DISP16:16位偏移地址数据传送原则⼝诀数据传送原则寄段储间互传数,seg、reg、mem之间的数据可以相互传送。

⽴即只⼊寄和储。

im可⼊reg、mem只有寄间互换数,reg之间的数据可以传送。

Mem间、seg间不可⾃传CS⽴即不可⽬,CS和⽴即数不可⼊,不能当⽬的操作数8088指令系统8088指令系统分六⼤类⼀、数据传送指令⼆、算术运算指令三、逻辑运算与位移指令四、串操作指令五、控制与转移指令六、CPU控制指令⼀、数据传送指令1.通⽤传送指令(1)传送指令MOV dst,src功能:dst←src(2)堆栈操作指令⼈WPUSH src作⽤:SP←SP-2((SP+1)+SP)←src src(reg seg mem) POP dst作⽤:dst←((SP+1)+SP)SP←SP-2dst(reg seg mem)(3)交换指令XCHG OPR1,OPR2OPR1←→OPR22.累加器传送指令(1)输⼊输出指令256B短格式:直接寻址,64K长格式:直接、间接寻址,PORT为8位⼝地址输⼊指令:直接寻址IN AX,PORT INAL,PORT间接寻址IN AX,DX IN AL,DX输出指令:直接寻址OUT AX,PORT OUT AL,PORT间接寻址OUT AX,DX OUT AL,DX(2)换码指令XLAT AL←(BX+AL)(BX)为mem地址3.地址传送指令(1)有效地址传送寄存器LEA reg16,mem作⽤:mem的EA→reg16(2)指针送寄存器和DS指令LDS reg16,mem32作⽤:reg16←mem32的低字⾼字→DS(3)指针送寄存器和有ES指令LES reg16,mem32作⽤:reg16←mem32的低字⾼字→ES4.标志寄存器传送指令(1)取标志指令:LAHF F的低字节→AH(2)置标志指令:SAHF AH→flag的低字节(3)标志⼊栈指令:PUSHF SP-2→SP F→(SP+1):SP(4)标志出栈指令:POPF(SP+1):SP→F SP+2→SP⼆、算术运算指令1.加法类指令(Add)opr-reg mem B/W(1)不带进位加法ADD dst,src dst←dst+src影响OSZAPC(2)带进位加法ADC dst,src dst←dst+src+CF影响OSZAPC(3)加1指令INC opr opr←opr+1影响OSZP(4)组合⼗进制调整DAA放在ADD后(5)⾮组合⼗进制调整AAA放在ADC后原理:2个⼗进制数相加,可能出现⾮法数(A到F),需⽤调整指令,进⾏加6调整变成合法⼗进制数。

汇编语言程序设计第三章习题答案

汇编语言程序设计第三章习题答案

第三章答案:3.1(1)立即数寻址代码段(2)寄存器寻址数据段(3)寄存器间址数据段(4)寄存器间址数据段(5)直接寻址数据段(6)直接寻址数据段(7)基址寻址堆栈段(8)直接寻址代码段(9)寄存器寻址数据段(10)变址寻址数据段(11)基址变址寻址数据段(12)基址变址寻址堆栈段(13)基址变址寻址堆栈段(14)基址变址寻址堆栈段3.2(1)直接寻址30000H+0ABCH=30ABCH(2)寄存器寻址(3)直接寻址30000H+2000H=32000H(4)基址寻址30000H+0100H+2000H=32100H(5)寄存器间址30000H+0100H=30100H(6)寄存器间址30000H+00A0H=300A0H(7)寄存器间址20000+0010H=20010H(8)基址变址寻址20000H+0010H+2000H+00A0H=220B0H (9)基址寻址30000H+0100H-40H=300C0H(10)变址寻址30000H+0040H+00A0H=300E0H(11)基址变址寻址30000H+0100H+0100H-0040H=301C0H (12)基址变址寻址20000H+00A0H+0100H+0010H=201B0H (13)变址寻址30000H+2000H+0002H=32002H(14)基址变址寻址41000H+2000H+0100H+0002H=43102H 3.3第一种:MOV AX,[02C0H]第二种:MOV AX,[BP]第三种:MOV AX,0240H[BX]第四种:MOV AX,0100H[DI]第五种:MOV AX,0220H[SI](只要物理地址为095C0H即可)3.4(1)错,类型不匹配(2)错,类型二义性(3)对(4)错,立即数不能直接送入段寄存器(5)错,字节单元无法存放PUSH的值(6)对(7)对(8)错,不能把数据从段寄存器传入段寄存器(9)错,源操作数与目的操作数不能同时为存储器操作数(10)错,操作数类型二义性(11)错,XCHG指令的两个操作数都不能为立即数(12)错,类型不匹配(13)错,操作数类型二义性(14)错,RCL移位不为1时,必须用CL寄存器来操作(15)错,不能传送入段寄存器CS(16)错,目的操作数不能为立即数(17)错,格式不正确(18)错,变址寄存器不能使用寄存器BP(19)错,基址寄存器不能使用寄存器SI(20)错,目的操作数必须为通用寄存器3.5(1)(CL)=0F6H(2)(1E4F6)=5678H(3)(BX)=0056H (AX)=1E40H(4)(SI)=00F6H (DS)=1E40H (1E4F6H)=0024H (5)(CX)=00F6H (AX)=5678H (09226H)=1234H 3.6MOV是数据传送指令,LEA是取地址指令。

汇编语言 第三章 实方式指令寻址与指令系统

汇编语言 第三章 实方式指令寻址与指令系统

3.2实方式32位指令寻址

实地址方式32位指令寻址,指在32位的PC机上使
用16位的存储机制,执行32位的非保护方式及非虚拟
方式的指令,达到直接存取32位寄存器和32位存储器
操作数的目的。
3.3实方式指令系统
指令系统是一台机器所有指令的集合。 Pentium系列 机指令系统庞大、类型多样,约有300多条指令,其中包 括基本指令100多条。 具有支持多进程、多任务、虚 拟存储器和多媒体等功能的32位指令。
设DS=4000H, 1、MOV AX,[3020H] 2、VAR DW 86
MOV AX,VAR 3、SI=1800H, MOV AX,[SI] 4、COUNT DW 5,6,7,8 SI=06H MOV AX,COUNT[SI]
3.1.3数据寻址与数据结构的 关系
多种寻址方式能方便、灵活的存取操作数, 支持高级语 言的某些数据结构。
寄存器间接寻址例
例:MOV AX,[BX] 设BX=1200H

MOV


偏移地址

1200H 22H

AH AL 11 22
11H


寄存器间接寻址
由寄存器间接给出操作数的偏移地址;
存放偏移地址的寄存器称为间址寄存器,它们是:BX, BP,SI,DI
操作数的段地址(数据处于哪个段)取决于选择哪一 个间址寄存器:
一、立即寻址
指令中的源操作数是立即数,即源操作数是参加操作 的数据本身
例:MOV AX,1200H
AH AL
MOV
00H

12H



寄存器寻址(Register Addressing)

汇编语言王爽第三版检测点答案带目录

汇编语言王爽第三版检测点答案带目录

汇编语言王爽第三版检测点答案带目录一、前言在学习汇编语言的过程中,王爽老师的《汇编语言》第三版是一本备受推崇的教材。

为了帮助大家更好地掌握这门语言,下面将为大家提供一份详细的检测点答案,并附上目录,以便大家能够快速找到所需内容。

二、目录1、基础知识11 数制与编码12 内存地址空间2、寄存器21 通用寄存器22 段寄存器3、指令系统31 数据传送指令32 算术运算指令33 逻辑运算指令34 转移指令4、内存寻址41 直接寻址42 寄存器间接寻址43 基址变址寻址44 相对基址变址寻址5、程序设计51 顺序程序设计52 分支程序设计53 循环程序设计6、中断与 BIOS 调用61 中断概念62 BIOS 调用三、检测点答案1、基础知识11 数制与编码检测点 11:将十进制数 123 转换为十六进制数。

答案:7B检测点 12:已知一个字节的二进制数为 10101100,求其对应的十进制数。

答案:17212 内存地址空间检测点 13:若内存地址从 0000H 到 7FFFH,其存储容量是多少?答案:32KB检测点 14:内存地址空间中,某段地址范围为 2000H 2FFFH,该段地址空间有多少字节?答案:4KB2、寄存器21 通用寄存器检测点 21:在 8086 CPU 中,AX 寄存器可以分为哪两个 8 位寄存器?答案:AH 和 AL检测点 22:已知 AX = 1234H,BX = 5678H,执行 ADD AX, BX 后,AX 的值是多少?答案:68ACH22 段寄存器检测点 23:CS 寄存器的作用是什么?答案:CS 寄存器用于存放代码段的段地址。

检测点 24:若代码段的段地址为 1000H,偏移地址为 2000H,那么物理地址是多少?答案:12000H3、指令系统31 数据传送指令检测点31:MOV AX, 1000H 指令执行后,AX 寄存器的值是多少?(假设内存单元 1000H 的值为 5678H)答案:5678H检测点 32:已知 AX = 1234H,BX = 5678H,执行 MOV 2000H, AX 后,内存单元 2000H 的值是多少?答案:1234H32 算术运算指令检测点 33:若 AX = 1000H,BX = 2000H,执行 ADD AX, BX 后,AX 和 CF 的值分别是多少?答案:AX = 3000H,CF = 0检测点 34:已知 AX = 5678H,执行 INC AX 后,AX 的值是多少?答案:5679H33 逻辑运算指令检测点 35:若 AX = 1234H,执行 AND AX, 0F0FH 后,AX 的值是多少?答案:0204H检测点 36:已知 AX = 5678H,执行 OR AX, 0F000H 后,AX 的值是多少?答案:5678H | 0F000H = 5F78H34 转移指令检测点 37:JMP 指令有几种跳转方式?答案:无条件跳转和条件跳转。

汇编语言第3版王爽检测点答案及详细解析

汇编语言第3版王爽检测点答案及详细解析

汇编语⾔第3版王爽检测点答案及详细解析汇编语⾔第3版王爽检测点答案及详细解析转⾃:https:///qq_42777804/article/details/90512159第⼀章基础知识检测点1.1(1)1个CPU的寻址能⼒为8KB,那么它的地址总线的宽度为 13位。

(2)1KB的存储器有 1024 个存储单元,存储单元的编号从 0 到 1023 。

(3)1KB的存储器可以存储 8192(2^13)个bit, 1024个Byte。

(4)1GB是 1073741824 (2^30)个Byte、1MB是 1048576(2^20)个Byte、1KB是 1024(2^10)个Byte。

(5)8080、8088、80296、80386的地址总线宽度分别为16根、20根、24根、32根,则它们的寻址能⼒分别为: 64 (KB)、 1 (MB)、 16 (MB)、 4 (GB)。

(6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。

则它们⼀次可以传送的数据为: 1 (B)、 1 (B)、 2 (B)、 2 (B)、 4 (B)。

(7)从内存中读取1024字节的数据,8086⾄少要读 512 次,80386⾄少要读 256 次。

(8)在存储器中,数据和程序以⼆进制形式存放。

解题过程:(1)1KB=1024B,8KB=1024B*8=2^N,N=13。

(2)存储器的容量是以字节为最⼩单位来计算的,1KB=1024B。

(3)8Bit=1Byte,1024Byte=1KB(1KB=1024B=1024B*8Bit)。

(4)1GB=1073741824B(即2^30)1MB=1048576B(即2^20)1KB=1024B(即2^10)。

(5)⼀个CPU有N根地址线,则可以说这个CPU的地址总线的宽度为N。

这样的CPU最多可以寻找2的N次⽅个内存单元。

(⼀个内存单元=1Byte)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

11
十、栈段
分析:如果我们将10000H—1FFFFH这段空间作栈段,初
始状态栈是空的,此时SS=1000H,SP=?一个栈段最
大可以设为多少? • 假定SS=1000H,栈最底部的字单元地址为0000:FFFE; • 当栈中只有一个元素的时候,SP=FFFEH; • 栈为空,就相当于栈中唯一的元素出栈,出栈后, SP=SP+2=0。 • 栈顶的变化范围最大为:0-FFFFH,故栈段最大为 64KB。
;将0地址字单元的字型数据送入AX中
;将CX中的数据送到0地址字单元
;将0地址单元处的字节型数据送入BH
当向内存单元中存取数据时,若操作的为字节型数 据,则一次读写一个内存单元,若为字型数据,则 按低地址为低8位,高地址为高8位的原则存取数据。
2
内存单元中的情况如图所示,写出下面指令执行后各寄存器的值
10000H 23H 10001H 11H 10002H 22H
10003H 66H
3
内存单元中的情况如图所示,写出下面指令执行后内存中的值。
MOV MOV MOV MOV MOV SUB MOV
AX,1000H DS,AX AX,11316 [0],AX BX,[0] BX,[2] [2],BX
MOV AX, 1000H ———————— MOV SS, AX ————————
MOV SP, 0002H ———————— MOV AX,2266H PUSH AX
10
结论
–push、pop 实质上就是一种内存传送指令,可以在
寄存器和内存之间传送数据; –push和pop指令访问的内存单元的地址不是在指令 中给出的,而是由SS:SP指出; –push和pop指令还要改变 SP 中的内容; –CPU执行执行push、pop指令需要两步操作。
2. 设置AX=001AH, BX=001BH;
3. 将AX,BX中的数据入栈; 4. 然后将AX、BX清零; 5. 从栈中恢复AX、BX原来的 内容;
SUB
POP POP
BX,BX
BX AX
8
例3:编程 1. 将10000H—1000FH这段空间作栈,初始状态 栈是空的; 2. 设置AX=002AH,BX=002BH; 3. 利用栈,交换AX和BX中的数据。

目的操作数不允许是CS段寄存器 数据类型不匹配
段寄存器之间不允许数据直接传送
不允许两个操作数都是存储器单元 目的操作数不允许是立即数 立即数送内存单元要指明其类型
6
九、PUSH、POP指令
例1:编程,将10000H—1000FH这段空间当作栈,初 始状态栈是空的,将AX,BX,DS中的数据入栈。
MOV AX,1000H MOV SS,AX
PUSH AX
PUSH BX POP POP AX BX
MOV SP,0010H
MOV AX,002AH MOV BX,002BH
9
例 4:
功能:将10000H处写入字型数据2266H: MOV AX,1000H MOV DS,AX MOV AX,2266H MOV [0],AX 补全下面的代码,使它能够完成同样的功能
AX=1000H DS=1000H AX=2C34H
10000H 34H 23H 10001H 2CH 11H 10002H 12H 22H 10003H 1BH 11H
BX=2C34H BX=1B12H
4
MOV指令在使用时需注意以下几个问题: (1)立即数送主存时,要明确是字节传送还是字传送。 (2)立即数只能作源操作数,且它不能传送给段寄存器。
内存单元中的情况如图所示,写出下面指令执行后 寄存器AX,BX,CX,DS中的值。 MOV MOV MOV MOV MOV ADD ADD AX,1000H DS,AX AX,[0] BX,[2] CX,[1] BX,[1] CX,[2]
AX=1000H DS=1000H AX=1123H BX=6622H CX=2211H BX=8833H CX=8833H
问题: 试写几条指令,将AL中的数据保存到内存单 元12345H(1000H:2345H)中。
MOV BX,1000H MOV DS,BX
MOV [2345H],AL
1
三、寄存器和内存之间数据的传送
MOV BX,1000H MOV DS,BX MOV AX,[0] MOV [0],CX MOV BH,[0]
12
(3)段寄存器CS只能作源操作数,段寄存器之间不能直接传送。
(4)存储单元之间不能直接传送数据
5
例: 判断下列指令是否合法
MOV DS,AX MOV CS,AX MOV CH,4050H MOV DL,5BH MOV DX,5BH MOV DS,ES MOV [BX], [SI] MOV 45,DL MOV [SI ] , 45
MOV AX,1000H
MOV SS,AX
MOV SP,0010H PUSH AX PUSH BX PUSH DS
7
例2:编程
1. 将10000H—1000FH这段 空间当作栈,初始状态是空 的;MOV AX,源自000HMOV SS,AX
MOV SP,0010H MOV AX,001AH MOV BX,001BH PUSH AX PUSH BX SUB AX,AX
相关文档
最新文档