11 汇编语言程序设计
《汇编语言程序设计》期末考试-试卷及答案

《汇编语言程序设计》期末考试-试卷及答案一、 选择题(每题1分,共20分)1、下面存储器中属于辅助存储器的是:(、下面存储器中属于辅助存储器的是:(CDE CDE CDE)) A. RAM B. ROM C.C.磁盘磁盘 D.D.光盘光盘 E. 硬盘2、通常说计算机的内存为32M 32M、、64M 或128M 指的是:(指的是:(C C )A. RAM 的容量B. ROM 的容量C. RAM 和ROM 的容量D.硬盘的容量3、下面的说法正确的是:(、下面的说法正确的是:(AE AE AE))A. 存储器是计算机中存放程序和数据的记忆部件。
存储器是计算机中存放程序和数据的记忆部件。
B. 存储器中的信息被读出后即从存储器中消失。
存储器中的信息被读出后即从存储器中消失。
C. 存储器中如果已经存有数据,则不能再向其中写入新的数据。
D. 半导体存储器的存取速度比CD-ROM 的存取速度要慢。
的存取速度要慢。
E. 辅助存储器需要CPU 通过I/O 接口访问,因而速度较慢。
4、下面属于系统软件的有(、下面属于系统软件的有(A A )A. WINDOWS A. WINDOWSB. MASMC. Visual C++D. WORD 5. 5. 汇编语言的优点不包括汇编语言的优点不包括汇编语言的优点不包括__D_____D_____D___。
A A 直接有效地控制硬件直接有效地控制硬件直接有效地控制硬件B B B 生成的代码序列短小生成的代码序列短小生成的代码序列短小C C 运行速度快运行速度快运行速度快D D 编程容易6. 6. 下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是( AB) A 、AX AX,,BX BX,,CX CX,,DX B 、BX BX,,BP BP,,SI SI,,DI C 、SP SP,,IP IP,,BP BP,,DX D 、CS CS,,DS DS,,ES ES,,SS7. 7. 可用作寄存器间接寻址或基址、变址寻址的地址寄存器,正确的是(可用作寄存器间接寻址或基址、变址寻址的地址寄存器,正确的是( D D))。
IBM-PC汇编语言程序设计答案(第2版)

附录:《IBM—PC汇编语言程序设计》习题参考答案第一章.习题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=0 1.6下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?(1) D8 (2) FF答:(1) D8H表示的带符号数为-40,D8H表示的无符号数为216;(2) FFH表示的带符号数为-1,FFH表示的无符号数为255。
新版汇编语言程序设计习题答案(钱晓捷主编)

新版汇编语言程序设计习题答案(钱晓捷主编)第一章汇编语言基础知识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系列微处理器在指令集方面的发展。
汇编语言程序设计(第二版)课后答案

IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)(沈美明,温冬蝉著)第二章1.解答:有256个2.解答:如下图.第一个络子为000B0H字单元,注意,是字单元,第五个格子为000B3H字单元3.解答: 30022H字节单元内容: ABH 30024H字节单元内容: EFH30021H字单元内容: AB34H 30022H字单元内容: CDABH4.解答: 这三个物理地址都是3017AH,说明了不同的段地址和偏移地址对应同一物理地址5.解答: CS+IP 第一个字的物理地址为: 0AAA40H6.解答: 条件标志OF,SF,ZF,CF,的值依次为:0,0,0,07.下列操作可使用那些寄存器?(1)加法和减法AX,BX,CX,DX,当然,还有这几个通用寄存器的高低位了,如AH ,AL等(2)循环计数 CX(3)乘法和除法DX,AX,AH,AL(4)保存段地址CS ,DS,ES,SS(5)表示运算结果为O FLAGS(6)将要执行的指令地址IP(7) 将要从堆栈取出数据的地址BP,SP,SS8.可以用来指示存储器地址的寄存器有:BX,SP,BP,DI,CS,DS,SI,ES,SS,IP9.一一对应;5--A 4--B 2--C 3--D 12--E 9--F 11--G 10--H 13--I 8--J 7--K 6---L 1--M 15--N 14--O第三章1.(1)立即寻址没有(2)直接寻址 7237H(3)使用BX的寄存器寻址没有(4)使用BX的间接寻址 637DH(5)使用BX的寄存器相对寻址 0D5B4H(6)基址变址寻址 8E18H(7)相对基址变址 004FH2.根据下列要求,写出相应的汇编指令。
(1)ADD DX,BX(2) ADD AL,[BX][SI](3) ADD [BX][0B2H], CX(4) MOV AX,2A59H ADD [0524H] ,AX(5) ADD AL ,0B5H3.(1)寄存器间接寻址MOV BX,OFFSET [BLOCK][0AH]MOV DX ,[BX](2)寄存器相对寻址MOV SI,OAHMOV DX,[BLOCK][SI](3)基址变址寻址MOV BX ,BLOCKMOV SI,OAHMOV DX,[BX][SI]4.现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(2 1200)=2AH,(20201)=4CH,(21202)=B7H,(21203)=65H,试说明下列各条指令执行完后,AX寄存器的内容。
2022年广东白云学院计算机科学与技术专业《计算机系统结构》科目期末试卷A(有答案)

2022年广东白云学院计算机科学与技术专业《计算机系统结构》科目期末试卷A(有答案)一、选择题1、指令间“一次重叠”说法有错的是( )A.仅“执行k”与“分析k+1”重叠B."分析k”完成后立即开始“执行k”C.应尽量使“分析k+1”与“执行k”时间相等D.只需要一套指令分析部件和执行部件2、传统机器语言机器级,是用()来()机器指令。
A.硬件,翻译B.编译程序,翻译C.微指令程序,解释D.微指令程序,翻译3、对机器语言程序员透明的是()A.中断字B.主存地址寄存器C.通用寄存器D.条件码4、计算机中优化使用的操作码编码方法是( )。
(书上为扩展编码法)A哈夫曼编码B ASCII码C BCD码D扩展操作码5、非线性流水线是指( )A.一次运算中使用流水线中的多个功能段B.一次运算中要多次使用流水线中的某些功能段C.流水线中某些功能段在各次运算中的作用不同D.流水线的各个功能段在各种运算中有不同的组合6、系列机软件应做到( )。
A.向前兼容,并向上兼容B.向后兼容,力争向上兼容C.向前兼容,并向下兼容D.向后兼容,力争向下兼容7、下列说法正确的是( )A.Cache容量一般不大,命中率不会很高B.Cache芯片速度一般比CPU的速度慢数十倍C.Cache本身速度很快。
但地址变换的速度很慢D.Cache存贮器查映象表和访问物理Cache其间可以流水,使速度与CPU匹配8、微指令由()直接执行。
A.微指令程序B.硬件C.汇编程序D.编译程序9、直接执行微指令的是( )A.汇编程序B.编译程序C.硬件D.微指令程序10、计算机系统结构不包括()A.主存速度B.机器工作状态C.信息保护D.数据表示11、汇编语言程序经()的()成机器语言程序。
A.编译程序,翻译B.汇编程序,翻译C.汇编程序,解释D.编译程序,解释12、费林按指令流和数据流的多倍性把计算机系统分类,这里的多倍性指()。
A.系统瓶颈部件上处于同一执行阶段的指令流是数据流的多少倍。
《汇编语言程序设计》复习资料

《汇编语言程序设计》复习资料一、基本概念1、8088/8086CPU内部寄存器有__14____个,其中的AX、BX、CX、DX是通用寄存器,SP、BP、DI、SI 是基址和变址寄存器,CS、DS、ES、SS、是段寄存器,此外还有指令指针寄存器 IP 和标志位寄存器 FLAGS 两个控制寄存器,所有寄存器都是 16 _位寄存器,每个寄存器可以存放 16 位二进制数。
2、8088/8086CPU的标志位寄存器中有9个标志位,其中的DF、IF、TF是控制标志,OF、SF、ZF、CF、AF、PF 是状态标志。
3、8088/8086CPU有三组总线,它们是数据总线、控制总线和地址总线;地址总线是 20 条,因此它可以寻址的范围是 1M 字节。
通常将 1024 字节称为1K,将 1024K 字节称为1M。
4、8088/8086CPU的存储器采用分段方式管理,每个段最多可以有 64K 字节,全部存储空间可以分成 16 个大小为64K且互相不重叠的段。
5、采用分段方式管理的存储单元的地址分成物理地址和逻辑地址两种,逻辑地址由段地址和偏移地址两部分构成,段地址是每个存储器段的起始地址;偏移地址则是相对于每个段第一个存储单元的偏移值。
段地址存放在段寄存器中,由于8088/8086CPU的段寄存器是16位寄存器,因此在段寄存器中存放的是段地址的 16 位;而CPU对数据的存取是按物理地址进行的,物理地址和逻辑地址间的关系是__ 物理地址=段地址 16D(或10H)+ 偏移地址___。
6、存储器中,数据是以字节为单位存放的,它是一个 8位二进制数,16位二进制数是 2个字节,又称为字;每个存储单元可以存放一个字节;一个字则占用两个存储单元,存放时要将低字节放在地址较小的存储单元中。
7、计算机的指令由操作码字段和操作数字段构成,它们分别给出计算机所要执行的操作和执行操作所要的操作数。
8、指令操作数通常可以存放在指令中,也可以存放在CPU的寄存器中,大多数存放在存储器中,它们分别称为立即数、寄存器操作数和存储器操作数。
汇编语言程序设计专科复习题及答案专科复习题

汇编语言程序设计专科复习题及答案专科复习题复习题一一、单项选择题1.对于有符号的数来说,下列哪个值最大()A:0F8H B:11010011B C:82 D:123Q2.下列有关汇编语言中标号的命名规则中,错误的是(D )A:通常由字母打头的字符、数字串组成B:标号长度不能超过31个字符C:?和$不能单独作为标号D:.号不可位于标号首3.8088/8086存储器分段,每个段不超过()A.64K个字B.32K个字节C.1兆个字节D.64K个字节4.寻址指令MOV CX, [BX + DI + 20]使用的是哪一种寻址方式()A:寄存器寻址B:相对基址变址寻址C:变址寻址D:基址变址寻址5.若AX= - 15要得到AX=15应执行的指令是()A.NEG AXB.NOT AXC.INC AXD.DEC AX6.8086/8088系统执行传送指令MOV时()A.不影响标志位B.影响DF方向标志C.影响SF符号标志D.影响CF进位标志7.若要求一个操作数中的若干位维持不变,若干位置“1”,可以使用()A:NOT B:OR C:AND D:XOR8.下列指令中段默认为堆栈段的是()A.MOV AX,[BX+SI+10]B.ADD AX,ES:[SI]C.SUB [BX],[BP][DI]D. MOV DX,[1000H]9.关于8086/8088微机系列,下列说法哪个是正确的()A:一个存储单元由16个二进制位组成,简称字。
B:当存储一个字数据时,低字节放高地址位,高字节放低地址位。
C:在内存空间中,可以无限分配段,且段的大小不受限制。
D:段与段之间可以邻接,也可以重叠。
10.下列关于堆栈的说法,错误的是()A:以“先入后出”为原则。
B:栈区最高地址单元的前一个单元为栈底。
C:运行中SP寄存器动态跟踪栈顶位置。
D:压栈和弹出都是以字节为单位。
11.表示过程定义结束的伪指令是()A.ENDPB.ENDSC.ENDD.ENDM 12.BUF1 DB 3 DUP(0,2 DUP (1,2),3)COUNT EQU $-BUF1符号COUNT等价的值是()A.6B.18C.16D.9 13.下列标志位中,可以用来判断计算结果正负的是()A:PF B:SF C:DF D:OF14.下列指令正确的是()A. MOV [100H], [BX]B.MOV DS, ESC. ADD V[BX], CXD.MOV AX, 34H15.下列哪个寄存器是属于指针寄存器()A:SI B:DX C:SP D:ES16.十六进制数88H,可表示成下面几种形式,请找出错误的表示()。
计算机组成原理与汇编语言程序设计课后习题及解答(详解)

计算机组成原理与汇编语言程序设计课后习题及解答徐洁,俸远祯电子工业出版社第1章习题一1.什么是程序存储工作方式?答:计算机的工作方式——存储程序工作方式。
即事先编写程序,再由计算机把这些信息存储起来,然后连续地、快速地执行程序,从而完成各种运算过程。
2.采用数字化方法表示信息有哪些优点?用数字化方法表示信息的优点:(1)抗干扰能力强, 可靠性高。
(2)依靠多位数字的组合,在表示数值时可获得很宽的表示范围以及很高的精度。
(3)数字化的信息可以存储、信息传送也比较容易实现。
(4)可表示的信息类型与范围及其广泛,几乎没有限制。
(5)能用逻辑代数等数字逻辑技术进行信息处理,这就形成了计算机硬件设计的基础。
3.如果有7×9点阵显示出字符A的图像,请用9个七位二进制代码表示A的点阵信息。
4.数字计算机的主要特点是什么?1. (1)能在程序控制下自动连续地工作;(2|)运算速度快;(3)运算精度高;(4)具有很强的信息存储能力;(5)通用性强,应用领域及其广泛。
5.衡量计算机性能的基本指标有哪些?答:衡量计算机性能的基本指标:(1)基本字长——参加一次运算的数的位数;(2)数据通路宽度——数据总线一次能并行传送的位数;(3)运算速度——可用①CPU的时钟频率与主频,②每秒平均执行指令数,③典型四则运算的时间来表示。
(4)主存储器容量——可用字节数或单元数(字数)×位数来表示。
(6)配备的外围设备及其性能。
(7)系统软件配置。
7.系统软件一般包括哪些部分?列举你所熟悉的三种系统软件。
系统软件一般包括操作系统,编译程序、解释程序、各种软件平台等。
例如WINDOWS98操作系统,C 语言编译程序等,数据库管理系统。
8.对源程序的处理有哪两种基本方式?对源程序的处理通常有两种处理方式:解释方式和编译方式。
第2章习题二1.将二进制数(101010.01)2 转换为十进制数及BCD码。
解:(101010.01)2 = (42.25)10 = (01000010.00100101)BCD2.将八进制数(37.2)8转换为十进制数及BCD码.解:(37.2)8 = (31.25)10 =(00110001.00100101)BCD3.将十六进制数(AC.E)转换为十进制数及BCD码.解: (AC.E)16 =(172.875)10 = (000101110010.100001110101)BCD4.将十进制数(75.34)10转换为8位二进制数及八进制数、十六进制数。
汇编语言程序设计试卷

汇编语言程序设计试卷一. (共75 题,共150 分)1.下列说法错误的是。
(2 分)A.机器指令的形式包含操作码和地址码B.计算机只能够识别规定好的机器指令C.不同计算机系统之间的机器指令能够相互兼容D.汇编语言的主要操作和机器指令基本上一一对应★检查答案标准答案:C2.两个有符号数相减,通过标志位判断结果是否溢出。
(2 分)A.ZFB.CFC.SFD.OF★检查答案标准答案:D(2 分)3.汇编语言和高级语言的比较,下列说法错误的是A.汇编语言和高级语言都不能被机器直接识别B.完成同样的功能,汇编语言占据空间小C.高级语言可以使用变量,但汇编语言不行D.汇编语言中有类似于高级语言的宏功能★检查答案标准答案:C4.下列寄存器中,哪个寄存器不能供汇编程序直接访问. (2 分)A.SPB.BPC.CSD.IP★检查答案标准答案:D5.下列寄存器,哪个不能作基址寄存器。
(2 分)A.BXB.BPC.SID.ESI★检查答案标准答案:C6.设有关寄存器及存储单元的内容如下:则指令MOV AX, 1100H[BX][SI] 执行完毕后,AX 寄存器中的值是。
(2 分)A.65B7HB.3412HC.4C2AHD.7856H★检查答案标准答案:AA.可以作立即寻址的操作数B.也可作某些存贮器操作数的的位移量组成部分C.在数据定义伪指令语句中给变量赋初值D.可以作目的操作数★检查答案标准答案:D8.若(ECX)=0ABCD1234H(BL)=0E3H,则语句MOVSX ECX,BL执行后:(ECX)的值为。
(2 分)A.0ABCD1234HB.0FFFFFFE3HC.000000E3HD.0ABCD12E3H★检查答案标准答案:B(2 分)9.若(AX)=0FFFDH ,则语句ADD AX,7FFFH 执行后,下列说法正确的是。
A.(AX) =7FFCH,(OF)=1 ,(CF)=1B.(AX) =17FFCH ,(OF)=1 ,(CF)=1C.(AX)=7FFCH,(OF)=0 ,(CF)=1 D.(AX)=17FFCH ,(OF)=0 ,(CF)=1★检查答案标准答案:C10.在语句INC SS:[BX] 中,操作数使用的段寄存器是。
汇编语言程序设计2

目录系统认识 (1)实验一数码转换编程及程序调试 (5)实验二运算类编程实验 (11)实验三分支程序、循环程序设计实验 (16)实验四子程序设计实验 (22)实验五显示程序实验 (26)实验六串行通讯应用实验 (27)附录WMD86 联机软件使用说明 (40)系统认识一、实验目的掌握TD-PITE微机原理与接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。
二、实验设备PC微机一台,TD-PITE实验装置一套。
三、实验内容编写实验程序,将00H~0FH共16个数写入内存3000H开始的连续16个存储单元中。
四、实验步骤1. 运行Wmd86软件,进入Wmd86集成开发环境。
2. 根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言,如图1所示。
语言选择后,下次再启动软件,语言环境保持这次的修改不变。
在这里,我们选择汇编语言。
图13. 语言选择后,点击新建或按Ctrl+N组合键来新建一个文档,如图2所示。
默认文件名为Wmd861。
图24. 编写实验程序,如图3所示,并保存,此时系统会提示输入新的文件名,输完后点击保存。
图3程序:SSTACK SEGMENT STACK ;定义堆栈段DW 32 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODE, SS:SSTACKSTART: PUSH DSXOR AX, AXMOV DS, AXMOV SI, 3000H ;建立数据起始地址MOV CX, 16 ;循环次数AA1: MOV [SI], ALINC SI ;地址自加1INC AL ;数据自加1LOOP AA1AA2: JMP AA2CODE ENDSEND START5. 点击,编译文件,若程序编译无误,则输出如图4所示的输出信息,然后再点击进行链接,链接无误输出如图5所示的输出信息。
图4图56. 连接PC与实验系统的通讯电缆,打开实验系统电源。
ch11-汇编语言与高级语言溷合程序设计

汇编语言与高级语言混合程序设计本章对汇编语言与C语言混合程序进行设计。
主要介绍汇编语言和C语言的混合编程和调用方法。
7.1.汇编语言和高级语言程序设计语言按照功能的不同可以分为3种:机器语言、汇编语言和高级语言。
把机器语言指令以助记符来表示,就成汇编语言指令,汇编语言指令必须用工具软件翻译(汇编过程)成机器语言指令才能执行,其它高级语言也必须翻译(编译或解释)为机器语言才能执行。
高级语言是独立于机器的通用语言,不依赖于特定计算机的硬件结构和指令系统。
用高级语言写的源程序,可以在不同的计算机上重新编译(或解释)后运行,而得到相同运行结果。
高级语言包括C/C++、Basic、Pascal、Java等。
C/C++语言是一种应用广泛,并且实现灵活的一种计算机编程语言,用C/C++语言编出来的程序,可以在很多平台上运行,可移植性强。
C/C++不仅具有良好的高级语言特征,而且还具有一些低级语言的特点,如:寄存器变量、位操作等。
所以,C/C++语言的程序与汇编语言程序之间能很平滑地衔接。
另外,目前主要的C/C++语言程序开发环境,如:Turbo C/C++、Borland C/C++等,也都提供了很好的混合编程手段。
计算机操作系统等大型软件,一般都采用C/C++语言和汇编语言混合编程来完成。
虽然除了C/C++以外的其它高级也可以与汇编语言进行混合编程,但下面我们重点讲述C/C++与汇编语言的混合编程问题。
7.2.为什么要混合编程?有时为了提高关键代码的执行效率,可以采用汇编语言来实现低层关键代码的功能,如数据采集、定时、调度等,而用C/C++等高级语言来实现高层如数据处理等功能。
通过C/C++与汇编语言之间的相互调用,实现汇编语言和高级语言的混合编程,发挥各自语言的优势。
这种混合编程的方法优点是提高了关键程序段的执行效率,而其缺点是程序移植性变差。
在操作系统软件中,如linux,、uC/OS II等就采用了C/C++与汇编语言的混合编程。
南京理工大学微型计算机考研指导 (11)

第一讲第三章汇编语言程序设计回顾:8086/8088的内部结构、寄存器功能和工作过程,指令格式、寻址方式和功能。
本讲重点:了解汇编的概念及其方法, 掌握汇编程序的基本格式,常用运算符的使用方法,汇编的步骤。
讲授内容:3.1 汇编语言的基本元素一、汇编语言的语句格式由汇编语言编写的源程序是由许多语句(也可称为汇编指令)组成的。
每个语句由1~4个部分组成,其格式是:[标号] 指令助记符[操作数][;注解]其中用方括号括起来的部分,可以有也可以没有。
每部分之间用空格(至少一个)分开,一行最多可有132个字符。
1.标识符是给指令或某一存储单元地址所起的名字。
可由下列字符组成:字母:A ~ z ;数字:0 ~ 9 ;特殊字符:?、·、@、一、$ 。
数字不能作标识符的第一个字符,而圆点仅能用作第一个字符。
标识符最长为31个字符。
当标识符后跟冒号时,表示是标号。
它代表该行指令的起始地址;当标识符后不带冒号时,表示变量;伪指令前的标识符不加冒号。
2.指令助记符表示不同操作的指令,可以是8088的指令助记符,也可以是伪指令。
3.操作数是指令执行的对象。
依指令的要求,可能有一个、两个或者没有,例如:RET ;无操作数COUNT:INC CX ;一个操作数如果是伪指令,则可能有多个操作数,例如:COST DB 3,4,5,6,7 ;5个操作数MOV AX,[BP十4] ;第二个操作数为表达式4.注解该项可有可无,是为源程序所加的注解,用于提高程序的可读性。
二、 汇编语言的运算符1.算术运算符、逻辑运算符和关系运算符① 算术运算符可以应用于数字操作数,结果也是数字。
而应用于存储器操作数时,只有+、- 运算符有意义。
2.取值运算符SEG 、OFFSET 、TYPE 、SIZE 和LENGTH· SEG 和OFFSET 分别给出一个变量或标号的段地址和偏移量。
例如,定义: SLOT DW 25则:MOV AX ,SLOT ;从SLOT 地址中取一个字送入AXMOV AX ,SEG SLOT ;将SLOT 所在段的段地址送入AXMOV AX ,OFFSET SLOT ;将SLOT 所在段的段内偏移地址送AX· TYPE 操作符返回一个表示存储器操作数类型的数值。
汇编语言程序设计(第二版)课后题答案

4.1、判断下列标识符的合法性。
1)、code 合法2)、Data 合法3)、ABCDH 合法4)、1abcH 不5)、eax 不6)、01 合法7)、A?@ 合法8)、www@zsu 合法9)、***********.cn不10)、AX$DX 合法11)、_BX 合法12)、CX 不4.2、按下面要求写出相应的数据定义语句(未指定变量名的,可任意指定或省缺)。
1)、定义一个字节区域,第一个字节的值为20,其后跟20个初值为0的连续字节;DB 20,20 DUP(0)2)、定义一个以0为结束符的字符串,其初值为:The course is easy;DB “The course is easy”,03)、定义一个以'$'为结束符的字符串,该串中含有换行符和回车符;DB 0D,0A,”$”4)、定义100个字,其初值为0;DW 100 DUP(0)5)、从一个偶地址开始定义一个字变量word;EVENWORD DW ?6)、先定义一个字符串String,其偏移量指定为10,其初值为"ABCDEF",然后再定义3个字类型的数组Data,要求String和Data的偏移量相同;ORG 10STRING DB "ABCDEF"ORG 10DATA DW 3 DUP(?)7)、定义一个字符串String,其初值为"12345678",再定义4个字类型的数组Data,要求String和Data共享同一片内存单元;STRING DB "12345678"ORG $-8DATA DW 4 DUP (?)4.3、把下列C语言的变量定义语句改写成与之等价的汇编语言语句。
1)、char ch1, ch2[3], ch3[]="Are you ready?", ch4='Q';CH1 DB ?CH2 DB 3 DUP (?)CH3 DB "Are you ready?",0CH4 DB “Q”2)、int w1, w2[5], w3=0x1234, w4[]={90, 89, 432, 344};W1 DW ?W2 DW 5 DUP (?)W3 DW 1234HW4 DW 90,89,432,3443)、long int d1=1234, d2, d3[10], d4[]={1, 2, 3, 4, 5, 6};D1 DD 1234D2 DD ?D3 DD 10 DUP(?)D3 DD 1,2,3,4,5,64.4、假设4.3题中三组变量在内存中是连续存放的,且变量ch1的偏移量是20H,试求出其它每个变量的偏移量。
实验五汇编语言程序设计实验(一)

实验五汇编语言程序设计实验(一)一、实验目的1、了解和掌握汇编语言子程序和主程序的设计。
2、掌握循环程序的设计。
3、掌握汇编语言主程序与子程序的调用和参数传递。
4、进一步熟悉在PC机上建立,汇编,链接,调试和运行8086、8088汇编语言程序的过程。
二、实验内容1、复习汇编语言源程序的上机过程:2、编写一个完整程序(包含循环设计和子程序设计)在以strg为首地址的缓冲区中存放着1个字符串,以-1作为结束标志,编程统计字符串长度,并将结果存入lenth单元。
要求统计字符串用子程序完成。
data segmentstrg db ‘abcd’,-1lenth dw ?data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axlea dx,strgcall scountmov lenth,bxmov ah,4chint 21hscount proc nearpush sixor bx,bxmov si,dxnext:cmp byte ptr[si],-1jz overinc bxinc sijmp nextover:pop siretscount endpcode endsend start三、实验器材IBM PC 微机一台四、实验要求1、正确理解本次实验的目的,内容和原理。
2、能编写相应的程序五、实验报告要求完成下面任务:从键盘输入1个长度小于100的字符串,存入以buff 为首地址的缓冲区,其中如有大写字母,要求用子程序转换成小写字母,字符串以回车键作为结束。
写出操作步骤,程序清单,程序注释,实验现象。
汇编语言程序设计教程(第二版)习题参考答案

汇编语言程序设计教程(第二版)习题参考答案第1章计算机基础知识1.计算机的应用分哪几个方面,请举例说明书中未提到的领域的计算机应用。
科学计算、数据处理、计算机控制、计算机辅助设计、人工智能、企业管理、家用电器、网络应用。
书中未提及的如:远程教育、住宅小区控制、飞行系统控制与管理等。
2.简述计算机的发展过程,请查阅相关资料,列出微机的发展过程。
电子管、晶体管、集成电路、大规模集成电路以IBM为例,微机的发展:4004、8008、8080、8086/8088、80286、80386、80486、Pentium 系列3.计算机的字长是怎么定义的,试举例说明。
计算机能同时处理二进制信息的位宽定义为计算机的字长。
如8086能同时进行16位二进制数据的运算、存储和传输等操作,该机器的字长为16位。
4.汇编语言中的基本数据类型有哪些?数值型数据和非数值型数据。
非数值数据如字符、字符串、逻辑值等。
(1)7BCH=011110111100B=1980D(2)562Q=101110010B=370D(3)90D=01011010B=5AH(4)1110100.111B=164.7Q=74.EH30H~39H 41H~5AH 61H~7AH9.在汇编语言中,如何表示二进制、八进制、十进制和十六进制的数值?用相应进制的数值加上进制标记即可。
二进制用B,如10101010B八进制用Q,如437Q。
十进制用D或不用,如54D,或54。
十六进制用H,如27A8H10.完成下列二进制数的加减运算。
(1)10101010 + 11110000 (2)11001100 + 01010100=110011010 =100100000(3)11011010 - 01010010 (4)11101110 - 01001101=10001000 =1010000111.完成下列十六进制数的加减运算。
(1)0FEA9 - 8888=7621H (2)0FFFF - 1234=EDCBH(3)0EAC0 + 0028=EAE8H (4)3ABC + 1678=5134H12.完成下列BCD码的运算。
汇编语言程序设计第三章习题答案

第三章答案: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是取地址指令。
pic单片机汇编语言程序设计实例

PIC单片机汇编语言程序设计实例介绍在计算机科学领域中,汇编语言是一种低级语言,用于编写机器指令的文本形式。
汇编语言程序设计是一门重要的技能,特别是在嵌入式系统开发中。
PIC (Peripheral Interface Controller)单片机是一种常见的微控制器,广泛应用于各种电子设备中。
本文将介绍PIC单片机汇编语言程序设计的实例,旨在帮助读者更好地理解和应用汇编语言编程。
PIC单片机简介PIC单片机是由美国微芯科技公司(Microchip Technology Inc.)设计和生产的一种微控制器。
它具有高性能、低功耗和丰富的外设接口,适用于各种应用领域,如家电、汽车电子、医疗设备等。
PIC单片机的指令集是基于汇编语言的,因此掌握汇编语言编程对于理解和应用PIC单片机至关重要。
PIC单片机汇编语言基础在开始编写PIC单片机汇编语言程序之前,我们首先需要了解一些基本概念和语法。
以下是一些常用的指令和语法:1. 数据寄存器PIC单片机有多个数据寄存器,用于存储数据和中间结果。
例如,W寄存器是一个通用寄存器,用于存储临时数据。
另外,还有一些特定功能的寄存器,如PORTA寄存器用于控制输入输出。
2. 指令集PIC单片机的指令集包含了各种操作指令,如算术运算、逻辑运算、位操作等。
每个指令都有特定的操作码和操作数,用于执行相应的操作。
3. 标志寄存器PIC单片机的标志寄存器用于存储一些状态信息,如进位标志、零标志等。
这些标志位可以用于条件分支和循环控制。
4. 中断PIC单片机支持中断机制,可以在特定条件下中断当前程序的执行,执行中断服务程序。
中断可以提高系统的响应速度和实时性。
PIC单片机汇编语言程序设计实例下面将通过几个实例来演示PIC单片机汇编语言程序的设计和实现。
实例1:LED闪烁步骤:1.初始化端口为输出模式。
2.设置LED引脚为高电平,使LED熄灭。
3.延时一段时间。
4.设置LED引脚为低电平,使LED亮起。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在上面的结构中,程序结束后返回DOS操作系统用的是: mov ah,4ch int 21H 当用户程序结束时,返回dos操作系统还有一种常用的方法: 1.首先把用户程序设置成一个过程,且类型设置为far。 2.在用户程序程序开始处 push ds xor ax,ax push ax 在子程序结束时用ret指令。这样也可以返回dos操作系统。 这实际上是用了int 20h中断指令。虽然我们从程序表面上没有看 到这条指令,但是这条指令一定存在于用户程序的目标代码之前 的程序段前缀区(program segment prefix)中。
代码段
<此处加入你自己的程序段>
;系统功能调用,程序结束返回操作系统OS
code
;汇编结束,程序起始点为start
关于源程序结构的几点说明
在代码段中,assume语句只给出了各个段寄存器和各 个自定义段的关系,并没有给各个段寄存器真正赋值。 段寄存器的赋值还要由程序本身来完成,如我们用到 mov ax,data mov ds,ax mov es,ax 给ds和es赋值。第一条指令,将段基址送给目的操作 数,这是mov 指令的一个特殊情况 为什么只给ds,es赋值,而不给cs,ss赋值? 因为在dos环境下运行程序时,dos 的装入程序已经对 cs:ip和ss:sp作了正确的初始化,而ds,es初始化为程序 段前缀psp的起点,而非用户所需要的地址,所以我们 要对它俩重新赋值
原因是:每当一个用户程序的可执行文 件(.exe)被DOS加载至内存中去时, 它首先要为该程序建立一个一个文件头, 又叫程序段前缀(PSP),占100H(256) 个字节,然后把可执行的程序代码加载 至PSP的后续地址上。即CS指向地点。 而DS和ES初始化在PSP的起始地址。内 存分配如右图。PSP给出了用户可执行 文件的若干控制信息,其中前两个字节 是一条中断指令INT 20H,即程序结束 返回DOS指令。当用户程序结束运行时, 可以通过把程序执行地址返回PSP执行 这条指令而终止自己的进程。这是一种 传统方法
寄存器操作数,如ax,bx,bp,cx,dl等
常量 存储器操作数
常量包括常数、字符串常量,符
程序段前缀PSP (共256个字节)
用户数据段
ss 用户堆栈段 用户代码
用 户 空 间
cs
… …
系统和rom占用
用户程序装入内存 后的内存分配情况
;在屏幕上输出字符串:hello,everyone!的另一种编程 Stack segment Db 100 dup (?) Stack segment data segment String db ‘hello,everyone!’,0dh,0ah,’$’ Data segment Code segment Proc1 proc far assume cs:code, ds:data, es:data, ss:stack Start:push ds sub ax,ax push ax mov ax,data mov ds,ax mov ah,09h mov dx,offset string;或lea dx,string int 21h ret proc1 endp Code ends
程序结束 字符I/O AH02H,字符显示;DL=输出字符
按功能分 为11类
磁盘操作 文件操作
AH09H,字符串显示; DS:DX=缓冲区首址
网络共享
…
(3)INT 21H 的使用
a、02H功能号的使用(显示字符‘B’) MOV AH,02H MOV DL,’B’ INT 21H
汇编语言中的操作数
top
SEGMENT ENDS
<数据、变量在此定义>
;定义作为数据段的逻辑段,段名为data
数据段
SEGMENT ;定义作为代码段的逻辑段,段名为code ASSUME CS:code, DS:data, ES:data, SS:stack start: MOV AX, data ;程序执行起始点 MOV DS, AX MOV ES, AX;将各个段寄存器指向用户定义的各个逻辑段 ;MOV AX,stack ;MOV SS, AX ;MOV SP, OFFSET TOP MOV AL, 4CH INT 21H ENDS END start
DOS中断(9个 20H—27H&2FH) 软件中断 ROM BIOS中断(10--1FH)
自由中断(40H~FFH)
2、DOS中断
DOS中断 (共9个) DOS专用中断(3个 22H、23H、24H) DOS可调用中断(6个,分别为: 20H、21H、25H、26H、27H、2FH)
3、DOS可调用中断
第四章 汇编语言程序设计(2)
汇编语言源程序的另一种结构 汇编语言中的操作数 Dos 功能调用 汇编语言程序设计举例
一个基本的汇编语言程序框架如下:返回
LABLE ENDS word ;定义栈底位置
堆栈段
stack SEGMENT PARA ‘stack‘ ;定义作为堆栈段的逻辑段,段名为stack DB 100 DUP(‘?’) ;定义堆栈长度 stack data data code
磁盘读写中断(25H、26H) DOS可调 用中断
程序退出中断(20H、27H)
假脱机打印文件中断(2FH)
DOS功能调用中断(21H)
3、DOS功能调用中断(INT 21H)
00000H
INT 21H
(1)INT 21H 的中断向量
00084H
…
00087H
…
003FFH
256个中 断向量
(2)INT 21H 的子功能(共计84个子功能)
end start
DOS功能调用 重点注意:
1、 DOS功能调用的概念;
2、 DOS功能调用中字符I/O功能的使用方法。
一、
DOS功能调用的概念
1、软件中断:
格式: INT n n为中断类型号,每个类型号对应一个四字节 的向量。8086有多达256个不同的中断类型号向量, 这些向量被存放在物理地址为00000H—003FFH的存 储单元中。 软件中断分为三类: