第二章 汇编语言与程序1
新版汇编语言程序设计习题答案(钱晓捷主编)电子教案
新版汇编语言程序设计习题答案(钱晓捷主编)新版汇编语言程序设计习题答案(钱晓捷主编)第一章汇编语言基础知识1.1、简述计算机系统的硬件组成及各部分作用1.2、明确下列概念或符号:主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB1.3、什么是汇编语言源程序、汇编程序、目标程序?1.4、汇编语言与高级语言相比有什么优缺点?1.5、将下列十六进制数转换为二进制和十进制表示(1)FFH (2)0H (3)5EH (4)EFH(5)2EH (6)10H (7)1FH (8)ABH1.6、将下列十进制数转换为BCD码表示(1)12 (2)24 (3)68 (4)127(5)128 (6)255 (7)1234 (8)24581.7、将下列BCD码转换为十进制数(1)10010001 (2)10001001 (3)00110110 (4)10010000(5)00001000 (6)10010111 (7)10000001 (8)000000101.8、将下列十进制数分别用8位二进制数的原码、反码和补码表示(1)0 (2)-127 (3)127 (4)-57(5)126 (6)-126 (7)-128 (8)681.9、完成下列二进制数的运算(1)1011+1001 (2)1011-1001 (3)1011×1001 (4)10111000÷1001(5)1011 ∧~1011 (8)1011 ⊕ 1001 1001(6)1011 ∨1001(7)1.10 数码0~9、大写字母A~Z、小写字母a~z对应的ASCII码分别是多少?ASCII码为0dh、0ah对应的是什么字符?1.11、计算机中有一个“01100001”编码,如果把它认为是无符号数,它是10进制什么数?如果认为它是BCD码,则表示什么数?又如果它是某个ASCII码,则代表哪个字符?1.12、简述Intel 80x86系列微处理器在指令集方面的发展。
钱晓捷新版汇编语言程序设计习题答案(1-4)
钱晓捷新版汇编语言程序设计习题答案第一章汇编语言基础知识1.17、举例说明CF和OF标志的差异。
溢出标志OF和进位标志CF是两个意义不同的标志进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确;溢出标志表示有符号数运算结果是否超出范围,运算结果已经不正确•例1:3AH + 7CH=B6H无符号数运算:58+124=182,范围内,无进位有符号数运算: 58+124=182 ,范围外,有溢出•例2:AAH + 7CH=(1)26H无符号数运算:170+124=294,范围外,有进位有符号数运算:-86+124=28 ,范围内,无溢出1.20、8086有哪4种逻辑段,各种逻辑段分别是什么用途?(解答)代码段(Code Segment)用来存放程序的指令序列。
处理器利用CS : IP取得下一条要执行的指令•堆栈段(Stack Segment)确定堆栈所在的主存区域。
处理器利用SS : SP操作堆栈中的数据•数据段(Data Segment)存放当前运行程序所用的数据。
处理器利用DS : EA存取数据段中的数据•附加段(Extra Segment)是附加的数据段,也用于数据的保存。
处理器利用ES : EA存取数据段中的数据第二章8086指令系统2.1已知DS = 2000H、BX = 0100H、SI = 0002H,存储单元[20100H] ~ [20103H]依次存放12 34 56 78H,[21200H] ~ [21203H]依次存放2A 4C B7 65H,说明下列每条指令执行完后AX寄存器的内容。
(1) mov ax,1200h ;AX=1200h(2) mov ax,bx ; AX=0100h(3) mov ax,[1200h] ; AX=4C2Ah(4) mov ax,[bx] ; AX=3412h(5) mov ax,[bx+1100h] ; AX=4C2Ah(6) mov ax,[bx+si] ; AX=7856h(7) mov ax,[bx][si+1100h] ; AX=65B7h2.2指出下列指令的错误(1) mov cx,dl 两操作数类型不匹配(2) mov ip,ax IP 指令指针禁止用户访问(3) mov es,1234h 立即数不允许传给段寄存器(4) mov es,ds 段寄存器之间不允许传送(5) mov al,300 两操作数类型不匹配(6) mov [sp],ax 目的操作数应为[ BP ](7) mov ax,bx+di 源操作数应为 [BX+DI](8) mov 20h,ah 立即数不能作目的操作数2.3已知数字0 ~ 9对应的格雷码依次为:18H、34H、05H、06H、09H、0AH、0CH、11H、12H、14H,它存在于以table为首地址(设为200H)的连续区域中。
汇编语言程序设计(第四版)【课后答案】
汇编语言程序设计第四版【课后习题答案】第1章汇编语言基础知识〔习题1.1〕简述计算机系统的硬件组成及各部分作用。
〔解答〕CPU:包括运算器、控制器和寄存器组。
运算器执行所有的算术和逻辑运算;控制器负责把指指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;寄存器组为处理单元提供所需要的数据。
存储器:是计算机的记忆部件,它用来存放程序以及程序中所涉及的数据。
外部设备:实现人机交换和机间的通信。
〔习题1.2〕明确下列概念或符号:主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB。
〔解答〕主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和使用的数据,CPU可以直接存取,它由半导体存储器芯片构成其成本高、容量小、但速度快。
辅存是辅助存储器的简称,辅存可用来长期保存大量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,其成本低、容量大,但速度慢。
RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电后能保存信息。
存储器由大量存储单元组成。
为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个存储地址,I/O接口是由一组寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址,通常称做I/O端口。
KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位。
〔习题1.3〕什么是汇编语言源程序、汇编程序、目标程序?〔解答〕用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编译通过的程序就是目标程序。
〔习题1.4〕汇编语言与高级语言相比有什么优缺点?〔解答〕汇编语言与高级语言相比的优点:由于汇编语言本质就是机器语言,它可以直接地、有效地控制计算机硬件,因而容易产生运行速度快,指令序列短小的高效目标程序,可以直接控制计算机硬件部件,可以编写在“时间”和“空间”两方面最有效的程序。
指令系统与汇编语言程序设计
1010011i n
85 n1 n2
MOV DPTR,#d1d2 ;DPTR←d1d2
90 d1 d2
习题1:找出配对指令,实精现选p反pt 向传送。
《单片机原理及应用》教学课件
例2-4-1:顺序执行下列指令序列,求每一步执行结果。
MOV A,#30H
;A= 30H
MOV 4FH,A
;(4FH)= 30H
2-1 指令格式
一. 汇编语言指令格式 [标号:]操作码 操作数1,操作数2[;注释]
换行表示一条指令结束。 例: LOOP: MOV A,#40H ;取参数
1.标号:指令的符号地址 2.操作码:指明指令功能。 3.操作数:指令操作对象 数据、地址、寄存器名及约定符号。 4.注释行:说明指令在程序中的作用。
第2章 指令系统与汇编语言程序设计 2-1 指令格式 2-2 指令寻址方式 2-3 状态标志 2-4 MCS-51指令系统
《单片机原理及应用》教学课件
单片机指令系统概述
一、MCS-51指令分类
MCS-51单片机共有111条指令。 1.按指令所占的字节数分类
①单字节指令49条 ②双字节指令46条 ③三字节指令16条 每条指令的平均字节数:
精选ppt
《单片机原理及应用》教学课件
例:查表法求Y=X2。设X(0≤X≤15)在片内RAM的20H单元中,要 求将查表求Y,存入片内RAM21H单元。
2)指令地址
1000H 1002H 1004H 1005H 1007H 1008H 100BH
源程序
ORG 1000H
;程序起始地址
SQU: MOV A,20H ;取X
操作码和操作数是指令主体。
精选ppt
汇编语言程序设计(第二版) 钱晓捷 课后答案
汇编语言程序设计(第二版)钱晓捷习题答案第二章(01)2.1(1)AX=1200h(2)AX=0100h(3)AX=4C2Ah(4)AX=3412h(5)AX=4C2Ah(6)AX=7856h(7)AX=65B7h2.2(1) 两操作数类型不匹配(2) IP指令指针禁止用户访问(3) 立即数不允许传给段寄存器(4) 段寄存器之间不允许传送(5) 两操作数类型不匹配(6) 目的操作数应为[ BP ](7) 源操作数应为[BX+DI](8) 立即数不能作目的操作数2.3lea bx,table ;获取table的首地址,BX=200Hmov al,8 ;传送欲转换的数字,AL=8xlat ;转换为格雷码,AL=12H2.4mov ax,8057hpush axmov ax,0f79hpush axpop bx ;bx=0f79hpop [bx] ;DS:[0f79h]=8057h2.6AL=89h CF ZF SF OF PFAL=12h 1 0 0 1 1AL=0afh 0 0 1 0 1AL=0afh 1 0 1 0 1AL=00h 0 1 0 0 1AL=0ffh 0 0 1 0 1AL=00h 0 1 0 0 12.5堆栈是一种按“先进后出”原则存取数据的存储区域。
堆栈的两种基本操作是压栈和出栈,对应的指令是PUSH和POP。
2.7W=X+Y+24-Z2.8(1)ADD DX,BX(2)ADD AL,[BX+SI](3)ADD [BX+0B2H],CX(4)ADD WORD PTR [0520H],3412H(5)ADD AL,0A0H2.9;为了避免与操作数地址混淆,将题中X,Y,Z,V 字操作数改为A,B,C,Dmov ax,X ;ax=Aimul Y ;dx,ax = A*B (将操作数看作符号数,以下同)mov cx,axmov bx,dx ;bx,ax <-- dx,ax =A*Bmov ax,Z ;ax = Ccwd ;dx,ax =C (扩展符号后为双字)add cx,axadc bx,dx ;bx,cx <-- bx,cx+dx,ax=A*B+Csub cx,540sbb bx,0 ;bx,cx<-- A*B+C-540mov ax, V ;ax= Dcwd ;dx,ax= D (扩展符号后为双字)sub ax, cxsbb dx, bx ;dx,ax = dx,ax - bx,cx = D-(A*B+C-540)idiv X ;运算结果:[D-(A*B+C-540h)]/A ;ax存商,dx存余数2.10;(1)xchg的操作数不能是立即数(2不能对CS直接赋值(3)两个操作数不能都是存储单元(4)堆栈的操作数不能是字节量(5)adc的操作数不能是段寄存器(6)没有确定是字节还是字操作(7)in不支持超过FFH的直接寻址(8)out只能以AL/AX为源操作数第二章(02)2. 其他逻辑指令使CF=OF=0, 根据结果影响其他标志位。
大学课件MCS51单片机指令系统与汇编语言程序设计
ANL C, P ; (C)← (C)∧(P)
其中:P是PSW的第0位,C是PSW的第7位。
(4)字节符号地址(字节名称)加位序号的形式。对于部分特 殊功能寄存器(如状态标志寄存器PSW),还可以用其字节名 称加位序号形式来访问某一位。AC 如:
定义:操作数存放在MCS-51内部的某个工作寄存器Rn (R0~R7)或部分专用寄存器中,这种寻址方式称为 寄存器寻址。
特点:由指令指出某一个寄存器的内容作为操作数。 存放操作数的寄存器在指令代码中不占据单独的一个 字节,而是嵌入(隐含)到操作码字节中。
寻址范围:四组通用寄存器Rn(R0~R7)、部分专用 寄存器( A, B, DPTR, Cy )。
伪指令只出现在汇编前的源程序中,仅提供汇编用的某些控制 信息,不产生可执行的目标代码,是CPU不能执行的指令。
(1)定位伪指令ORG
格式:ORG n
其中:n通常为绝对地址,可以是十六进制数、标号或表达式。
功能:规定编译后的机器代码存放的起始位置。在一个汇编 语言源程序中允许存在多条定位伪指令,但每一个n值都应和前
2.2.2 直接寻址
定义:将操作数的地址直接存放在指令中,这种寻址方式称为 直接寻址。 特点:指令中含有操作数的地址。该地址指出了参与操作的数 据所在的字节单元地址或位地址。计算机执行它们时便可根据 直接地址找到所需要的操作数。
寻址范围:ROM、片内RAM区、SFR和位地址空间。P42
2.2.3 寄存器寻址
定义:指令中给出的操作数是一个可单独寻址的位地址,这种寻址 方式称为位寻址方式。
特点:位寻址是直接寻址方式的一种,其特点是对8位二进制数中 的某一位的地址进行操作。
寻址范围:片内RAM低128B中位寻址区、部分SFR(其中有83位 可以位寻址)。
IBM-PC汇编语言程序设计(第二版)答案1-8章
///第一章. 习题1.1 用降幂法和除法将下列十进制数转换为二进制数和十六进制数:(1) 369 (2) 10000 (3) 4095 (4) 32767答:(1) 369=1 0111 0001b=171h(2) 10000=10 0111 0001 0000b=2710h(3) 4095=1111 1111 1111b=fffh(4) 32767=111 1111 1111 1111b=7fffh1.2 将下列二进制数转换为十六进制数和十进制数:(1) 10 1101 (2) 1000 0000 (3) 1111 1111 1111 1111 (4) 1111 1111答:(1) 10 1101b=2dh=45(2) 1000 0000b=80h=128(3) 1111 1111 1111 1111b=ffffh=65535(4) 1111 1111b=ffh=2551.3 将下列十六进制数转换为二进制数和十进制数:(1) fa (2) 5b (3) fffe (4) 1234答:(1) fah=1111 1010b=250(2) 5bh=101 1011b=91(3) fffeh=1111 1111 1111 1110b=65534(4) 1234h=1 0010 0011 0100b=46601.4 完成下列十六进制数的运算,并转换为十进制数进行校核:(1) 3a+b7 (2) 1234+af (3) abcd-fe (4) 7ab×6f答:(1) 3a+b7h=f1h=241(2) 1234+afh=12e3h=4835(3) abcd-feh=aacfh=43727(4) 7ab×6fh=35325h=2178931.5 下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。
(1) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76 (6) -85-(-76)答:(1) (-85)+76=1010 1011b+0100 1100b=1111 0111b=0f7h;cf=0;of=0(2) 85+(-76)=0101 0101b+1011 0100b=0000 1001b=09h;cf=1;of=0(3) 85-76=0101 0101b-0100 1100b=0101 0101b+1011 0100b=0000 1001b=09h;cf=0;of=0(4) 85-(-76)=0101 0101b-1011 0100b=0101 0101b+0100 1100b=10100001b=0a1h;cf=0;of=1(5) (-85)-76=1010 1011b-0100 1100b=1010 1011b+1011 0100b=0101 1111b=5fh;cf=0;of=1(6) -85-(-76)=1010 1011b-1011 0100b=1010 1011b+0100 1100b=11110111b=0f7h;cf=0;of=01.6 下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?(1) d8 (2) ff答:(1) d8h表示的带符号数为-40,d8h表示的无符号数为216;(2) ffh表示的带符号数为-1,ffh表示的无符号数为255。
番茄花园-第二章ATT汇编语言
AT&T汇编语言常见指令
.ascii 语法:.ascii “string” …. ascii 表示零个或多个(用逗号隔开)字符串,并把每 个字符串(结尾不自动加“\0”字符)中的字符放在 连续的地址单元。于此类似的 .asciz指令定义的字 符串会在结尾处自动加 “\0”字符
.fill 语法:.fill repeat , size , value 含义是反复拷贝size个字节,重复repeat次 ,其中 size和value是可选的,默认值分别为1和0
扩展的行内汇编的语法
内嵌汇编语法如下: __asm__( 汇编语句模板: 输出部分: 输入部分: 破坏描述部分);
即格式为asm ( "statements" : output_regs : input_regs : clobbered_regs)
扩展的行内汇编的语法
扩展行内汇编共分四个部 分:汇编语句模板,输出 部分,输入部分,破坏描 述部分,各部分使用“:” 格开,汇编语句模板必不 可少,其他三部分可选, 如果使用了后面的部分, 而前面部分为空,也需要 用“:”格开,相应部分内 容为空。
movl $0xffff,%ebx
从表中可in以t 看到80在h AT%T汇编中诸in如t "%$e0axx8"0、"%ebx"之 类的寄存器名字前都要加上"%";"$8"、"$0xffff"这样的立 即数之前都要加上"$"。
AT&T 与Intel的汇编语言语法区别
源/目的操作数顺序
Intel语法 MOV EAX,8
在这里“x”便是最终存放输出结果的C程序变量, 而“=g”则是限定字符串,限定字符串表示了对它 之后的变量的限制条件
汇编语言程序设计(第二版) 钱晓捷 习题答案
汇编语言程序设计(第二版) 钱晓捷 习题答案第二章(01)2.1(1)AX =1200h(2)AX =0100h(3)AX =4C2Ah(4)AX =3412h(5)AX =4C2Ah(6)AX =7856h7)AX =65B7h ( 2.2(1) 两操作数类型不匹配(2) IP 指令指针禁止用户访问(3) 立即数不允许传给段寄存器(4) 段寄存器之间不允许传送(5) 两操作数类型不匹配(6) 目的操作数应为[ BP ](7) 源操作数应为 [BX+DI](8) 立即数不能作目的操作数2.3lea bx,table ;获取table 的首地址,BX =200Hmov al,8 ;传送欲转换的数字,AL =8xlat ;转换为格雷码,AL =12H2.4堆栈是一种按“先进后出”原则存取数据的存储区域。
堆栈的两种基本操作是压栈和出栈,对应的指令是PUSH 和POP 。
2.5mov ax,8057hpush axmov ax,0f79hpush axpop bx ;bx=0f79hpop [bx] ;DS:[0f79h]=8057h2.6AL=89h CF ZF SF OF PFAL=12h 1 0 0 1 1AL=0afh 0 0 1 0 1AL=0afh 1 0 1 0 1AL=00h 0 1 0 0 1AL=0ffh 0 0 1 0 1AL=00h 0 1 0 0 12.7 W=X+Y+24-Z w w w .k h d a w .c o m 课后答案网2.8(1)ADD DX,BX(2)ADD AL,[BX+SI](3)ADD [BX+0B2H],CX(4)ADD WORD PTR [0520H],3412H(5)ADD AL,0A0H2.9;为了避免与操作数地址混淆,将题中X,Y,Z,V 字操作数改为A,B,C,D mov ax,X ;ax=Aimul Y ;dx,ax = A*B (将操作数看作符号数,以下同) mov cx,axmov bx,dx ;bx,ax <-- dx,ax =A*Bmov ax,Z ;ax = Ccwd ;dx,ax =C (扩展符号后为双字)add cx,axadc bx,dx ;bx,cx <-- bx,cx+dx,ax=A*B+Csub cx,540sbb bx,0 ;bx,cx<-- A*B+C-540mov ax, V ;ax= Dcwd ;dx,ax= D (扩展符号后为双字)sub ax, cxsbb dx, bx ;dx,ax = dx,ax - bx,cx = D-(A*B+C-540)idiv X ;运算结果:[D-(A*B+C-540h)]/A ;ax 存商,dx 存余数2.10;(1)xchg 的操作数不能是立即数(2不能对CS 直接赋值(3)两个操作数不能都是存储单元(4)堆栈的操作数不能是字节量(5)adc 的操作数不能是段寄存器(6)没有确定是字节还是字操作(7)in 不支持超过FFH 的直接寻址(8)out 只能以AL/AX 为源操作数第二章(02)2.11;指令 AX 的值 CF OF SF ZF PF Mov ax,1407h 1470h - - - - - And ax,ax 1470h 0 0 0 0 0 Or ax,ax 1470h 0 0 0 0 0 Xor ax,ax 0 0 0 0 1 1 Not ax 0ffffh - - - - - Test ax,0f0f0h 0ffffh 0 0 1 0 1 注意: 1. mov, not 指令不影响标志位2. 其他逻辑指令使CF=OF=0, 根据结果影响其他标志位。
汇编语言程序设计复习
知识点第一章基础知识(1)正负数的补码表示, 掌握计算机中数和字符的表示;eg.假设机器字长为8位,[+3]补=00000011B,[-3]补= 11111101 H 。
十六进制数0FFF8H表示的十进制正数为65528D,表示的十进制负数为-8D。
8位二进制数被看成是带符号补码整数时,其最小值是-128,最大值是 127 。
第二章80x86计算机组织(1)中央处理机CPU的组成和80x86寄存器组,重点:专用寄存器,段寄存器eg: IP寄存器中保存的是?代码段中的偏移地址FLAGS标志寄存器中共有几位条件状态位6位,有几位控制状态位2位,标志寄存器分为哪2类?陷阱标志,中断标志。
(2)存储单元的地址和内容每一个字节单元给以一个唯一的存储器地址,称为物理地址;一个存储单元中存放的信息称为该存储单元的内容。
存储器地址的分段,(低位字节存放)低地址,(高位字节存放)高地址;实模式下逻辑地址、选择器和偏移地址;物理地址的表示段基地址加上偏移地址。
eg.如果SS=6000H,说明堆栈段起始物理地址是_____60000H___。
已知字节(00018H)=14H,字节(00017H)=20H,则字(00017H)为__1420H______。
如果(SI)=0088H,(DS)=5570H,对于物理地址为55788H的内存字单元,其内容为0235H,对于物理地址为5578AH的内存字单元,其内容为0E60H,那么执行指令LDS SI,[SI]以后,(SI)= 0235H ,(DS)= 0E60H .第三章80x86的指令系统和寻址方式与数据有关的寻址方式(立即寻址方式,寄存器寻址方式,直接寻址方式,寄存器间接寻址方式,寄存器相对寻址方式,基址变址寻址方式,相对基址变址寻址方式)和与转移地址有关的寻址方式(段内直接寻址,段内间接寻址,段间直接寻址,段间间接寻址)。
数据传送指令(通用数据传送指令、累加器专用传送指令、输入输出指令)、算术指令(加法指令、减法指令(*加减指令对4个标志位的影响[of,cf,sf,zf])、乘法指令(*乘法指令的要求:目的操作数必须是累加器)、除法指令(*被除数在累加器中,除法指令执行完以后,商和余数在?))、逻辑指令(逻辑运算指令(*XOR,AND,OR,TEST指令及指令执行后对标志位的影响)、移位指令)、串处理指令(与REP相配合工作的MOVS、STOS、LODS 指令,与REPE/REPZ和REPNE/REPNZ联合工作的CMPS、SCAS指令)、控制转移指令(无条件转移指令、条件转移指令、循环指令、子程序调用指令、中断)。
第二章习题解答
第二章习题解答2.12.3答:⑴执行单元EU负责执行指令。
EU在工作时不断地从指令队列取出指令代码,对其译码后产生完成指令所需要的控制信息。
数据在ALU中进行运算,运算结果的特征保留在标志寄存器FLAGS中。
总线接口单元BIU负责CPU与存储器、I/O接口之间的信息传送。
BIU取出的指令被送入指令队列供EU执行,BIU取出的数据被送入相关寄存器中以便做进一步的处理。
⑵执行单元EU不能直接访问存储器2.4答:(1)要利用信号线包括WR#、RD#、IO/M#、ALE以及AD0~AD7、A8~A19。
(2)同(1)。
(3)所有三态输出的地址信号、数据信号和控制信号均置为高阻态。
2.5答:在每个总线周期的T3的开始处若READY为低电平,则CPU在T3后插入一个等待周期TW。
在TW的开始时刻,CPU还要检查READY状态,若仍为低电平,则再插入一个TW 。
此过程一直进行到某个TW开始时,READY已经变为高电平,这时下一个时钟周期才转入T4。
可以看出,插入TW周期的个数取决于READY电平维持的时间。
2.62.72.8通用寄存器包含以下8个寄存器:AX、BX、CX和DX寄存器一般用于存放参与运算的数据或运算的结果。
除此之外:AX:主要存放算术逻辑运算中的操作数,以及存放I/O操作的数据。
BX:存放访问内存时的基地址。
CX:在循环和串操作指令中用作计数器。
DX:在寄存器间接寻址的I/O指令中存放I/O地址。
在做双字长乘除法运算时,DX 与AX合起来存放一个双字长数。
SP:存放栈顶偏移地址。
BP:存放访问内存时的基地址。
SP和BP也可以存放数据,但它们的默认段寄存器都是SS。
SI:常在变址寻址方式中作为源地址指针。
DI:常在变址寻址方式中作为目标地址指针。
专用寄存器包括4个段寄存器:CS:代码段寄存器,用于存放代码段的段基地址。
DS:数据段寄存器,用于存放数据段的段基地址。
SS:堆栈段寄存器,用于存放堆栈段的段基地址。
工学PIC单片机指令系统
2.4 常数和控制操作类指令
4.常数或指令
第52页/共106页
2.4 常数和控制操作类指令
5.常数异或指令
第53页/共106页
2.4 常数和控制操作类指令
6.看门狗计数器清零指令
第54页/共106页
2.4 常数和控制操作类指令
7.常数传送指令
第55页/共106页
2.4 常数和控制操作类指令
3.位测试,为零则跳指令
第47页/共106页
2.3 位操作指令
4.位测试,为1则跳指令
第48页/共106页
2.4 常数和控制操作类指令
1.常数加法指令
第49页/共106页
2.4 常数和控制操作类指令
2.常数减法指令
第50页/共106页
2.4 常数和控制操作类指令
3.常数与指令
第51页/共106页
第67页/共106页
2.5 汇编语言程序设计
2.5.1 汇编语言程序设计知识 2.PIC 汇编语言的程序流程图
③循环程序流程图 循环程序的结构包含以下4个组成部分: 循环初始化部分:为循环程序作准备。如循环变
量设置,即指定或定义一个循环变量作循环次数 计数器或地址指针,并给它设置一个初始值。
2.2 ~2.4指令集
第21页/共106页
2.2 ~2.4指令集
第22页/共106页
2.2 ~2.4指令集
第23页/共106页
2.2 ~2.4指令集
第24页/共106页
2.2 ~2.4指令集
第25页/共106页
2.2 ~2.4指令集
第26页/共106页
2.2 ~2.4指令集
第27页/共106页
2.1 指令系统概述
第02章单片机指令系统与汇编语言程序设计习题解答
第02章单⽚机指令系统与汇编语⾔程序设计习题解答第02章单⽚机指令系统与汇编语⾔程序设计习题解答⼀、填空题1. MCS-51单⽚机指令系统中有 111 条指令。
2. MCS-51单⽚机指令中,Rn表⽰ R0、R1、R2、R3、R4、R5、R6、R7中的⼀个。
3. MCS-51单⽚机指令中,@表⽰间接寻址。
4. MCS-51单⽚机指令中,$表⽰当前指令的⾸地址。
5. MCS-51单⽚机寻址⽅式有⽴即数、直接地址、寄存器、寄存器间接、变址、相对、位寻址等七种寻址⽅式。
6. 指令MOVC A, @A+PC的功能是将A的内容与PC当前值相加作为程序存储器地址,再将该地址单元的内容传送到A 。
7. 指令JBC CY, LOOP是 3 字节、 2 个机器周期指令。
8. 指令DA A的功能是对A中当前值进⾏⼗进制调整。
9. 调⽤⼦程序时,将PC当前值保存到堆栈。
10. MCS-51单⽚机堆栈操作的基本原则是先进后出。
⼆、简答题1. MCS-51单⽚机指令⼀般由哪⼏个部分组成?各部分的功能是什么?答:MCS-51单⽚机指令⼀般由标号、操作码助记符、操作数、注释四部分组成。
标号是⼀条指令的标志,是可选字段,与操作码之间⽤“:”隔开;设置标号的⽬的是为了⽅便调⽤或转移。
标号的选择应遵从下列规定:标号由1~8个字母或数字组成,也可以使⽤⼀个下划线符号“_”。
第⼀个字符必须是字母。
指令助记符或系统中保留使⽤的字符串不能作为标号。
标号后⾯需要有⼀个冒号。
⼀条语句可以有标号,也可以没有标号,取决于程序中其它语句是否需要访问这条语句。
操作码规定指令的功能,是⼀条指令的必备字段,如果没有操作码,就不能成为指令。
它与操作数之间⽤“空格”隔开。
操作数是指令操作的对象。
分为⽬的操作数和源操作数两类,它们之间⽤“,”分隔。
操作数是可选字段。
⼀条指令可以有0、1、2、3个操作数。
注释是对指令功能的说明解释。
以“;”开始。
2. 程序中,伪指令ORG和END的作⽤是什么?答:ORG⽤于定义汇编语⾔源程序或数据块存储的起始地址。
微机考试复习总结资料
(13)ADD AX,[SI][DI]非法,两个变址寄存器不能形成基址变址寻址
(14)PUSH FLAG非法,无此指令,可用PUSHF
(15)MOV AX,BYTE PTR[SI]非法,类型不匹配。源为字节型,目的为字类型
(16)MOV BL,SI+2非法,类型不匹配。BL为8位,SI+2为16位
(8)HLT无寻址方式
(9)ADD SI,[BX]源操作数为寄存器间接寻址方式,目的操作数为寄存器寻址方式
(10)MOV [BX+100],DI源操作数为寄存器寻址方式,目的操作数为基址寻址方式
2、指出下列传送指令中,哪些是非法指令:
(1)MOV DS,0100H非法,不能直接向DS中送立即数,应改为MOV AX,0100H
6、若CS=8000H,试说明现行代码段可寻址的存储空间范围。
解:若CS=8000H,现行代码段可寻址的存储空间范围为80000H~8FFFFH。
7、设现行数据段位于存储器的B0000H~BFFFFH,试说明DS段寄存器的内容。
解:DS=B000H
6700H
+78FFH
-----------
DFFFH
(2)CX=E000H,DX=78FFH,SFZFAFPFCFOF=101101B
ADC dest,source ;dest+source+CF--->dest
(3)CX=EE01H,DX=78FFH,SFZFAFPFCFOF=101010B
SUB dest,source;dest-source--->dest;
5、用增、减量指令设计程序时,其后不能用标志位作为判断的依据。为什么?
第2章-微机原理、汇编与接口技术(第3版)-朱定华-清华大学出版社
2.1.2 标号
标号→指令地址的符号表示
1、 标号的三个属性 (1)段基址—定义该标号所在段的段首址的高16位 (2)偏移地址—标号所在段的段首址到该标号定义指令的
字节距离 (3)类型—NEAR和FAR两种 NEAR—段内调用,FAR—段间调用
7
2.1.2 标号
2 、标号的定义 标号只在代码段中定义和使用,定义的方式有两种: (1)书写在符号指令前,用:定义,为NEAR类型, NEAR型标号只能在段内使用! 例: CYCLE:MOV AL,[SI] ;定义近标号CYCLE
4
2.1.1 常量
(2)符号常量 程序中为经常使用的数值取的名。 用EQU或“=”伪指令定义,如:
P EQU 314 P=314
注:汇编时,汇编程序不给符号常量分配存储单元
5
2.1.1 常量
2、数值表达式 数字表达式——由常量与运算符组成的有意义的 式子,结果为一数值。
在汇编语言源程序中,允许对常量进行以下三种类型 的运算: (1)算术运算 包括+,-,×,/,MOD(求余) (2)逻辑运算 包括AND,OR,XOR,NOT (3)关系运算 包括:EQ(=),NE(≠),LT (<),GT(>),LE(≤),GE(≥)
;基址来初始化其变量
(5)由以上表达DB 1,2,3
B6 DB ’1,2,3’
; 此行的“,”不是序列分隔符
14
例 画出数据的存储形式
W1 DW B2 ;用B2的偏移地址初始化W1变量 B1 DB AB$ ;变量B1用A、B、$的ASCII码初始化 W2 DW 1994H D DD EW ;用变量EW的段基址和偏移地址初始化D B2 DB 2 DUP(-5,-1)
微机原理、汇编与接口技术
第二章--第四节--汇编语言程序设计方法(二)
A+30HA A(22H) 结束
R0
0010 0000
END
BCD码十进制转换成二进制
例:假如在内部RAM40H单元中存储有一个压缩BCD编码 的两位十进制数,设计一段程序把这个数转换成二进制数 并存入41H单元中。 解题思路: (40H) 16 商为二进制的高四位
余数
余为二进制的低四位
将高四位乘以0AH,再加上低四位即可。
数据排序程序 例:将片内RAM中20H-27H中的数据按照从小到大的顺序重新排列。 解题思路:见下图
RAM地址 原始数据
20H 66H
21H 11H
22H 10H
23H 34H
24H 67H
25H 01H
26H 89H
27H A0H
1
2 3 4 5 6 7
01H
01H 01H 01H 01H 01H 01H
11H
10H 10H 10H 10H 10H 10H
10H
11H 11H 11H 11H 11H 11H
34H
34H 34H 34H 34H 34H 34H
汇编语言程序设计第二版刘慧婷王庆生主编课后参考答案
汇编语言程序设计第二版刘慧婷王庆生主编课后参考答案汇编语言程序设计第二版课后参考答案第一章:计算机系统概述1.1 计算机系统的结构和层次安排计算机系统是由硬件和软件两部分组成。
硬件包括中央处理器(CPU)、存储器、输入输出设备等,而软件则包括系统软件和应用软件。
1.2 计算机的工作原理计算机按照指令的顺序执行,并且可以通过I/O设备进行输入输出。
1.3 二进制数的表示和转换二进制数是用0和1表示的数,可以通过不同进位的转换方法将其转换为十进制数、八进制数或十六进制数。
第二章:汇编语言的基本知识2.1 指令系统和指令格式指令系统定义了计算机能够执行的指令的集合,指令格式则规定了指令的编码方式。
2.2 寻址方式和寻址方式标志寻址方式指的是指令操作数的寻址方式,寻址方式标志则用于表示指令中操作数的寻址方式。
2.3 汇编程序的基本格式汇编程序由指令、伪指令和注释组成,其中指令用于描述要执行的操作,伪指令用于进行程序的控制和数据的定义。
2.4 汇编语言程序的编写规则汇编语言程序需要遵守一定的规则,例如标号的定义、指令的书写规范等。
第三章:基本指令的使用3.1 数据传送指令数据传送指令用于将一个数据从源操作数传送至目的操作数。
例如,MOV指令用于将源操作数的内容复制到目的操作数。
3.2 算术运算指令算术运算指令用于进行加法、减法、乘法和除法等数值运算。
例如,ADD指令用于进行两个操作数的相加运算。
3.3 逻辑运算指令逻辑运算指令用于进行与、或、非、异或等逻辑运算。
例如,AND指令用于进行两个操作数的逻辑与运算。
3.4 条件转移指令条件转移指令根据某个条件是否成立来决定是否进行转移。
例如,JMP指令用于根据条件是否满足来进行无条件转移。
3.5 循环指令循环指令用于进行循环操作。
例如,LOOP指令用于实现有限次数的循环操作。
第四章:汇编语言的高级应用4.1 子程序的使用子程序是一段独立的代码块,在需要时可以被调用执行,用于实现重复利用的功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8
3. 标号
标号是指令地址的符号表示,也可以是过程名。 标号的定义方式有两种: (1)用“:”定义,直接写在指令助记符前。 如 CYCLE:MOV AL,[S1] (2)用PROC和ENDP伪指令定义过程。 标号代表指令的地址,因而它也有3个属性:段地址、 偏移地址和类型。 标号的段地址:定义该标号所在段的段地址。 标号的偏移地址:标号所在段的段首址到该标号定 义指令的字节距离。 标号的类型有NEAR和FAR两种。
有效长度为1-31个字符。
12
(2) 指令助记符:指出指令的操作类型。
(3) 操作数:参加本指令运算的数据。 (4) 注释:指令功能的说明。
13
有效地址EA(Effective Address)
内存单元的地址:段基址 16 + 段内偏移量 EA
14
指令包含的信息
(1) 做什么操作 (2) 操作数的来源 (3) 操作结果的存数
(4) 下一条指令的位置
15
指令的基本构成
目的 源
说明要执 行的是什 么操作
操作对象, 可以有0个、 1个或2个
16
指令举例:
MOV AX , BX
操作码 操作数 ADD AX,[SI+6] INC
HLT
17
[BX]
双操作数指令 ADD AX, BX
大多数运算型指令都是双操作数指令,对这种 指令,有的机器(大中型)使用“三地址”指令: 除给出参加运算的两个操作数外,还要指出运算结 果的存放地址。
26
1. 立即寻址
操作数(为一常数)直接由指令给出 (此操作数称为立即数) 立即寻址只能用于源操作数 例:
MOV MOV
错误例:
AX, 1C8FH BYTE PTR[2A00H], 8FH 2A00H, AX ; 错误!
27
× MOV
指令操作例:MOV AX,3102H
; AX
3102H
寄存器相对寻址常用于存取表格或一维数组中的 元素——把表格的起始地址作为位移量,元素的下 标值放在间址寄存器中(或反之)
35
[BX] (1) 若EA = [SI] [DI] + 8位或16位偏移量
则操作数地址 DS: EA (2) 若EA = [BP] + 8位或16位偏移量 则操作数地址:SS: EA
. .
CDH ABH
数 据 段
30
3. 寄存器寻址
操作数放在某个寄存器中
源操作数与目的操作数字长要相同
寄存器寻址与段地址无关 例: MOV MOV MOV 错误例: × MOV × MOV AX, BX [3F00H], AX CL, AL AX, BL ES: AX, DX ; 字长不同 ; 寄存器与段无关
指令执行后:(AX)=5566H
(见下页图示)
37
MOV AX,DATA[BX]
. . .
DS 6000
BX 1000 + DATA 2A00 63A00
AX AH AL
操作码
00 偏移量低 2A 偏移量高
代 码 段
. . .
63A00H
66H 55H
. . .
数 据 段
38
6. 基址-变址寻址
第二章
汇编语言与 汇 编 程 序
1
二、汇编语言与汇编程序
2.1 符号指令中的表达式; 2.2 符号指令的寻址方式; 2.3 常用指令; 2.4 伪指令; 2.5 常用系统功能调用与BIOS。
2
2.1 符号指令中的表达式
1. 常量和数值表达式; 2. 变量和地址表达式; 3. 标号; 4. 标量和标号类型的变更。
36
例: MOV AX, [BX+8] MOV CX, TABLE[SI] MOV AX, [BP] ; 默认段寄存器为SS
指令操作例:MOV AX,DATA[BX]
若(DS)=6000H, (BX)=1000H, DATA=2A00H, (63A00H)=66H, (63A01H)=55H
则物理地址 = 60000H + 1000H + 2A00H = 63A00H
现代微型计算机中多采用二地址指令,两 个操作数分别称为“源操作数”和“目的操 作数”,指令执行后,把运算结果放到目的操 作数的地址之中。
18
指令系统设计
一个指令系统能够提供哪些寻址方式,能否为 编制程序提供方便,这是指令系统设计的关 键。 需要说明的是,在不同的计算机系统中,寻址 方式的名称和分类并不统一,但基本可以归 结为以下几种 错误例: × MOV × MOV
AX, [BX] [SI] AX, [BX+SI] AX, DS: [BP] [DI] AX, [BX] [BP] AX, [DI] [SI]
40
7. 相对的基址-变址寻址
在基址-变址寻址的基础上再加上一个相对位移量 注意事项同基址-变址寻址
单位用时钟周期数表示
结论: 1)尽量使用寄存器作为操作数 2)若有可能,用移位代替乘除法 3)尽量使用简单的寻址方式
25
三、8086的寻址方式
寻址方式——寻找操作数的方法
寻找操作数的地址
在8086指令系统中,说明操作数所在地 址的寻址方式可分为8种:
①立即寻址 ②直接寻址 ③寄存器寻址 ④间接寻址 ⑤ 寄存器相对寻址 ⑥基址-变址寻址 ⑦相对的基址-变址寻址 ⑧隐含寻址
3
1. 常量和数值表达式
常量是指在汇编时已经有确定数值的量: 数值常量、符号常量
数值表达式是由常量和算术、逻辑、关系等 运算符组成的有意义的式子。
4
2. 变量和地址表达式
变量是存储器中的数据或数据区的符号表示。
变量名即是数据的地址或数据区的首地址。
地址表达式是由变量、常量、寄存器(SI、DI、 BX、BP)的内容和运算符组成的有意义的式子。
若操作数的偏移地址: 由基址寄存器(BX或BP)给出 —— 基址寻址方式 由变址寄存器(SI或DI)给出 —— 变址寻址方式
由一个基址寄存器的内容和一个变址寄存器的内 容相加而形成操作数的偏移地址,称为基址-变址寻 址。
EA =
(BX) (BP)
+
(SI)
(DI)
同一组内的寄存器不能同时出现。
7
例如,在数据段DATAl中 定义的变量如下: Wl DW B3; B1 DB 'AB$’; W2 DW -5,1994H; B2 DB 4 DUP(?) ; D DD EB ; B3 DB 2 DUP(—1) DB l DUP(10,’E’) ; DB ’13’,1,3 在附加数据段DATA2中定 义的变量如下: EB DB 8 DUP(?) EW DW ’AB’,’CD’
[SI]
[DI]
若没有前缀指明具体的段寄存器,
则操作数在数据段中
(2) EA = [BP]
若没有前缀指明具体的段寄存器, 则操作数在堆栈段。
34
5. 寄存器相对寻址(包括基址寻址和变址寻址)
EA=间址寄存器的内容加上一个8/16位的位移量
(BX)
EA =
(BP) (SI) (DI)
+
8位
16位
位移量
例如:变量W的段地址和偏移地址分别表示为 SEG W和OFFSET W。
6
变量的定义
[变量名] 数据定义伪指令 表达式[,……] 变量名:数据的地址或数据区的首地址 数据定义伪指令:DB(定义字节)、DW(定义 字)、DD(定义双字)、DQ(定义4字)、DT(定 义10字节) 表达式:数值表达式、ASCII码字符串、地址 表达式、?及n DUP(表达式)
22
3、存储器操作数
类型 存储单元个数
字节 1
存储器操作数
字
双字
2
4
一般不允许两个操作数同时为存储器操作数
23
存储单元的物理地址 = 段基地址 + 偏移地址
若指令中没有指明所涉及的段寄存器,CPU就 采用默认的段寄存器来确定操作数所在的段。
存储器操作数的偏移地址(也称有效地址)可以通过 不同的寻址方式由指令给出。
;正确 ;错误
20
2、寄存器操作数
放在8个通用寄存器或4个段寄存器中的操作数
16 位 AX AH
16 位 BX BH BL
AL
16 位 CX CH CL
16 位 DX DH DL
21
SI DI
BP
SP
只能存放字操作数
CS
DS ES SS
段寄存器存放 当前操作数的 段基地址
不允许将立即数传送到段寄存器
变量或地址表达式可给出指令中的存储器的地址。 由于存储器是分段使用的,因此变量或地址表达式 都具有3重属性:段地址、偏移地址和类型。
5
变量的段地址是指变量所在段的段首地址除 以10H之商; 变量的偏移地址是指变量所在段的段首址到 该变量的字节距离; 变量的段地址和偏移地址分别用SEG或 OFFSET两个算符来指定。
31
指令操作例:MOV SI,AX 指令执行前:(AX)=2233H
; SI
(AX)
指令执行后:(AX)=2233H,(SI)=2233H
AX
2233H 2233H
SI
AX是累加器,结果存放在AX的话,执行时间要短些。 通用寄存器是处理器的一部分,采用寄存器寻址方式可 以提高效率。
32
4. 寄存器间接寻址
9
4. 标量和标号类型的变更
格式: 类型
PTR
地址表达式
PTR算符用来明确指出某个变量、标号或地址表达式 的类型属性,或者使它们临时兼有与原定义所不同的 类型属性,但仍保持它们原来的段地址和偏移地址属 性不变。 如:BYTE PTR W1