汇编语言程序设计试题答案
- 格式:docx
- 大小:20.72 KB
- 文档页数:10
一、单项选择题(每小题1分,共20分)1、设DS=8225H,DI=3942H,指令NEG BYTE PTR[DI]操作数的物理地址是(A)A、85B92HB、86192HC、BB690HD、12169H2、下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是(B)A、AX,BX,CX,DXB、BX,BP,SI,DIC、SP,IP,BP,DXD、CS,DS,ES,SS3、循环指令LOOPNZ终止循环的条件是(B)。
A、CX=0,且ZF=0B、CX=0,或ZF=1C、CX10,且ZF=0D、CX10,或ZF=14、对寄存器AX的内容乘以4的正确指令序列是(B)。
A、SHR AX,1 /SHR AX,1B、SHL AX,1/ SHL,AX,1C、ROL AX,1 /ROL AX,1D、RCR AX,1/ RCR AX,15、执行INC指令除对SF、ZF有影响外,还要影响的标志位是(A)。
A、OF,AF,PFB、OF,AF,CFC、OF,PF,CFD、AF,PF,CF6、设DH=10H,执行NEG DH指令后,正确的结果是(D)。
A、DH=10H CF=1B、DH=0F0H CF=0C、DH=10H CF=0D、DH=0F0H CF=17、下列传送指令中有语法错误的是(A)。
A、MOV CS,AXB、MOV DS,AXC、MOV SS,AXD、MOV ES,AX8、下面指令执行后,改变AL寄存器内容的指令是(D)。
A、TEST AL,02HB、OR AL,ALC、CMP AL,BLD、AND AL,BL9、执行除法指令后,影响的标志位是(D)。
A、CF,OFB、SF,ZFC、CF,OF,SFD、AF,CF,OF,PF,SF,ZF都不确定10、执行下面指令序列后,结果是(A)。
MOV AL,82H / CBWA、AX=0FF82HB、AX=8082HC、AX=0082HD、AX=0F82H11、与MOV BX,OFFSET VAR指令完全等效的指令是(D)。
汇编语言程序设计第四版【课后习题答案】--囮裑為檤第3章汇编语言程序格式〔习题3.1〕伪指令语句与硬指令语句的本质区别是什么?伪指令有什么主要作用?〔解答〕伪指令语句与硬指令语句的本质区别是能不能产生CPU动作;伪指令的作用是完成对如存储模式、主存变量、子程序、宏及段定义等很多不产生CPU动作的说明,并在程序执行前由汇编程序完成处理。
〔习题3.2〕什么是标识符,汇编程序中标识符怎样组成?〔解答〕为了某种需要,每种程序语言都规定了在程序里如何描述名字,程序语言的名字通常被称为标识符;汇编语言中的标识符一般最多由31个字母、数字及规定的特殊符号(如-,$,?,@)组成,不能以数字开头。
〔习题3.3〕什么是保留字,汇编语言的保留字有哪些类型,并举例说明。
〔解答保留字是在每种语言中规定了有特殊意义和功能的不允许再做其它用处的字符串;汇编语言的保留字主要有硬指令助记、伪指令助记符、运算符、寄存器名以及预定义符号等。
汇编语言对大小写不敏感。
如定义字节数和字符串的DB就是伪指令助记符。
〔习题3.4〕汇编语句有哪两种,每个语句由哪4个部分组成?〔解答〕汇编语句有执行性语句和说明性语句;执行性语句由标号、硬指令助记符、操作数和注释四部分组成;说明性语句由名字、伪指令助记符、参数和注释四部分组成〔习题3.5〕汇编语言程序的开发有哪4个步骤,分别利用什么程序完成、产生什么输出文件。
〔解答〕⒈编辑文本编辑程序汇编语言源程序.asm⒉汇编汇编程序目标模块文件.obj⒊连接连接程序可执行文件.exe或.com⒋调试调试程序应用程序〔习题3.6〕区分下列概念:(1)变量和标号(2)数值表达式和地址表达式(3)符号常量和字符串常量〔解答〕(1)变量是在程序运行过程中,其值可以被改变的量;标号是由用户自定义的标识符,指向存储单元,表示其存储内容的逻辑地址。
(2)数值表达式一般是由运算符连接的各种常数所构成的表达式,地址表达式是由名字、标号以及利用各种的操作符形成的表达式。
汇编语言程序设计题目以及答案[P1] 汇编语言程序设计题目以及答案汇编语言是一种底层计算机语言,它直接使用机器指令来编写程序。
本文将介绍一些汇编语言程序设计的题目,并提供相应的答案。
通过这些题目和答案的学习,读者可以更好地理解和掌握汇编语言程序设计的基本概念和技巧。
[题目一] 计算两个数的和要求:编写汇编程序,计算两个给定的整数的和,并将结果存储在指定的内存位置中。
答案:```assemblysection .datanum1 dd 10 ; 第一个整数num2 dd 20 ; 第二个整数result dd 0 ; 结果section .textglobal _start_start:mov eax, [num1] ; 将num1值存入寄存器eaxadd eax, [num2] ; 将num2值与eax寄存器中的值相加mov [result], eax ; 将结果存储到result变量mov eax, 1 ; 准备执行系统调用mov ebx, 1 ; 文件描述符:标准输出mov ecx, result ; 输出的数据mov edx, 4 ; 数据长度int 0x80 ; 执行系统调用mov eax, 1 ; 准备执行系统调用xor ebx, ebx ; 正常退出int 0x80 ; 执行系统调用```[题目二] 字符串反转要求:编写汇编程序,将一个给定的字符串反转,并将结果存储在指定的内存位置中。
答案:```assemblysection .datastr db 'Hello', 0 ; 待反转的字符串section .bssreverse resb 6 ; 存储反转后的字符串section .textglobal _start_start:mov esi, str ; esi指向待反转的字符串mov edi, reverse ; edi指向存储反转结果的位置 mov ecx, 5 ; 字符串长度为5mov ebx, 1 ; ebx用于计数reverse_loop:mov al, [esi+ebx]mov [edi-ebx+5], alinc ebxloop reverse_loopmov byte [edi+5], 0 ; 在末尾添加字符串结束符 mov eax, 4 ; 准备执行系统调用mov ebx, 1 ; 文件描述符:标准输出mov ecx, reverse ; 输出的数据mov edx, 6 ; 数据长度int 0x80 ; 执行系统调用mov eax, 1 ; 准备执行系统调用xor ebx, ebx ; 正常退出int 0x80 ; 执行系统调用```[题目三] 求平均数要求:编写汇编程序,计算给定的一组整数的平均数,并将结果存储在指定的内存位置中。
大连理工大学22春“计算机科学与技术”《汇编语言程序设计》作业考核题库高频考点版(参考答案)一.综合考核(共50题)1.MACRO和ENDM一对伪操作中间就是宏定义体,是一组有独立功能的程序代码。
()A.正确B.错误参考答案:A2.设某数据段:(1)DATA SEGMENT (2)ORG 20H (3)NUM1=8 (4)NUM2=NUM1+10H (5)DA1 DB ‘COMPUTER’ (6)DB 0AH,0DH (7)COUNT EQU $-DA1 (8)DA2 DW ‘CO’,‘MP’,‘UT ’,‘ER’ (9)DATA ENDS 请回答:COUNT的值是()。
A.18HB.0AHC.09HD.21H参考答案:B3.假设(EAX)=00001000H,(EBX)=00002000H,(DS)=0010H,试问MOV ECX,[EAX+EBX]指令访问内存的物理地址是()。
A.00003100HB.10003100HC.00003200HD.00005100H参考答案:A4.以下五个指令(1)MOV AL,55H (2)MOV CL,2 (3)ROL AL,CL (4)OR AL,1 (5)RCL AL,CL顺序执行完后,(AL)=多少?()A.54HB.53H参考答案:A5.当执行指令ADD AX,BX后,若AX的内容为2BA0H,设置的奇偶标志位PF=1,下面的叙述正确的是()。
A.表示结果中含2的个数为偶数B.表示结果中含1的个数为奇数C.表示该数为偶数D.表示结果中低八位含1的个数为偶数参考答案:D6.宏汇编中,实元可以是常数,寄存器,存储单元名,以及用寻址方式能找到的地址或表达式等。
()A.正确B.错误参考答案:A7.在计算机系统中,存储器是记忆设备,它主要用来()。
A.存放数据B.存放程序C.存放数据和程序D.存放微程序参考答案:C8.阅读下面的程序片段。
(1)MOV AX,723AH (2)MOV BX,0C86BH (3)SUB AL,BL (4)SBB AH,BH (5)XOR AL,01H (6)ADC AX,0执行该程序片段后:(AX)等于()。
新版汇编语言程序设计习题答案(钱晓捷主编)第一章汇编语言基础知识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系列微处理器在指令集方面的发展。
大工14 秋《汇编语言程序设计》在线测试1
单选题判断题多选题
一、单选题(共10 道试题,共30 分。
)
1. 下面的数值表示中,和127相等的是哪一个()
A. 11111111B
B. 127H
C. 80H
D. 7FH
正确答案:D
2. 在IBM PC中,一个字为()位二进制数。
A. 8位
B. 16位
C. 32位
D. 64位
正确答案:B
3. 一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是()
A. 12CSBH
B. 12B6BH
C. 12C59H#12BFEH
正确答案:C
4. 8086CPU在执行8位有符号数运算后,产生溢出是结果超出了:()
A. 0~255
B. +128~-128
C. +255~-256
D. +127~-128
正确答案:D
5. 已知物理地址(371F0H)=12H,(371F1H)=34H,(371F2H)=56H,如从地址371F0H 中取出一个字的内容是()
A. 3412H
B. 3421
C. 3410H
D. 3424
正确答案:A
6. CPU要访问的某一存储单元的实际地址称()
A. 段地址
B. 偏移地址
C. 物理地址
D. 逻辑地址。
汇编语⾔程序设计习题-答案4.1 分析执⾏下列指令序列后的结果:1)MOV AX,1234HMOV BX,00FFHAND AX,BX【答】(AX)=0034H2)MOV AL,01010101BAND AL,00011111B ;(AL)=00010101BOR AL,11000000B ;(AL)=11010101BXOR AL,00001111B ;(AL)=11011010BNOT AL【答】(AL)=00100101B3)MOV DL,05HMOV AX,0A00HMOV DS,AXMOV SI,0HMOV CX,0FHAGAIN: INC SICMP [SI],DLLOOPNE A GAINHLT本程序实现了什么功能?【答】在以0A001H开始的15个单元中查找05H。
4)MOV AX,DSEGADDRMOV DS, AXMOV ES,AXMOV SI, OFFSET B1ADDRMOV DI,OFFSET B2ADDRMOV CX,NCLDREP MOVSBHLT本程序实现了什么功能?MOV DS,AXMOV ES, AXMOV AL,05HMOV DI,0A000HMOV CX,0FHCLDAGAIN: SCASBLOOPNE AGAINHLT本程序实现了什么功能?【答】从地址0A000H开始的15个单元中查找字节型数据05H,⽤条件循环LOOPNZ,控制数据05H的查找。
4.2 阅读程序:1). CLDLEA DI,[0100H]MOV CX, 0080HXOR AX, AXREP STOSW本程序实现了什么功能?【答】将DS中起始地址为0100H的128个字节单元清零。
2). MOV AL, 08HSAL AL,01H ;(AL)=00010000HMOV BL, ALMOV CL ,02HSAL AL,CL ;(AL)=01000000HADD AL,BL ;(AL)=01010000H本程序实现了什么功能?【答】将AL中的内容乘以10。
大工14秋《汇编语言程序设计》在线测试2答案大工14秋《汇编语言程序设计》在线测试2单选题判断题多选题一、单选题(共10道试题,共30分。
)1.计算机处理问题中会碰到大量的字符、符号,对此必须采用统一的编码。
目前,微机中普遍采用的是()。
A. BCD码B.二进制码C. ASCII码D.十六进制码正确答案:C2.编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令是()。
A. CMPB. SUBC. ANDD. MOV正确答案:D3.当程序顺序执行时,每取一条指令语句,IP指针增加的值是()。
A. 1B. 2C. 3D.由指令长度决定的正确答案:D4.一个有16个字的数据区,它的起始地址是70A0H:DDF6,则这个数据区最末一个字单元的物理地址是()。
A. 7E806HB. 7E814HC. 7E815HD. 7E80BH正确答案:C5.若(AX)=2000H,(BX)=0050H,(H)=12H,(H)=34H,执行MOV AX、[BX]指令后,AX寄存器中的内容是()。
A. (AX)=0050HB. (AX)=0012HC. (AX)=1234HD. (AX)=3412H正确谜底:D6.若AX=349DH,CX=0FH。
则执行指令AND AX,CX 后,AX的值是()。
A. 349DCHB. 000DHC. 049DHD. 0240H正确谜底:B7.与指令MOV AX,NOT 0F0H等效的汇编语言指令是()。
A. MOV AX,0FHB. MOV AX,0FF0FHC. MOV AX,000FHD. MOV AX,0F0H正确谜底:B8.指令MOV AX,COUNT[SI],它源操作数的寻址方式是()。
A.直接寻址B.寄存器相对寻址C.寄放器间接寻址D.基址变址寻址正确答案:B9.CPU发出的访问存储器的地址是()。
A.物理地址B.偏移地址C.逻辑地址D.段地址正确答案:A10.若AX=3500H,CX=56B8H,当执行AND AX,CX指令后,AX的值是()。
大工15秋《汇编语言程序设计》在线测试2一、单选题(共10 道试题,共40 分。
)1. 如果当前(BL)=57H,执行指令ADD BL,0F0H后,OF标志位的取值为()。
A. 1B. 0C. 不确定D. 2正确答案:B2. 如果数据段中一个内存单元对应的物理地址为2F724H,(DS)=2F00H,那么使用DS 段寄存器指明该单元的段基值时,需要使用哪一个偏移量才能正确访问该单元()。
A. 24HB. 4HC. 0724HD. 2724H正确答案:C3. 汇编语言语句格式中对名字项的规定如下,请找出其中错误的说法()。
A. 名字的第一个字符可以是大写英文字母B. 名字的第一个字符可以是字母、数字、@、_C. 名字的有效长度≤31个字符D. 一般来说,名字项可以是标号正确答案:B4. 如果(SP)=30H,执行PUSH BX指令后,(SP)=()。
A. 28HB. 2EHC. 32HD. 31H正确答案:B5. 在DEBUG中,T命令的功能是()。
A. 观察某内存单元的当前内容B. 连续运行被调试的程序C. 单步执行下一条指令D. 修改指定寄存器的内容正确答案:C6. 汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是()。
A. 名字项B. 操作数项C. 注释项D. 以上都不对正确答案:B7. 以下五个指令(1)MOV AL,55H (2)MOV CL,2(3)ROL AL,CL (4)OR AL,1 (5)RCL AL,CL顺序执行完后,(CL)=多少?A. 2B. 3C. 4D. 5正确答案:A8. 以下五个指令(1)MOV AL,55H (2)MOV CL,2(3)ROL AL,CL (4)OR AL,1 (5)RCL AL,CL顺序执行完后,CF=多少?A. 1B. 2C. 3D. 0正确答案:A9. 如果(AL)=01111111B,执行INC AL指令后,CF=()。
汇编语言程序设计第四版【课后习题答案】--囮裑為檤第3章汇编语言程序格式〔习题3.1〕伪指令语句与硬指令语句的本质区别是什么?伪指令有什么主要作用?〔解答〕伪指令语句与硬指令语句的本质区别是能不能产生CPU动作;伪指令的作用是完成对如存储模式、主存变量、子程序、宏及段定义等很多不产生CPU动作的说明,并在程序执行前由汇编程序完成处理。
〔习题3.2〕什么是标识符,汇编程序中标识符怎样组成?〔解答〕为了某种需要,每种程序语言都规定了在程序里如何描述名字,程序语言的名字通常被称为标识符;汇编语言中的标识符一般最多由31个字母、数字及规定的特殊符号(如-,$,?,@)组成,不能以数字开头。
〔习题3.3〕什么是保留字,汇编语言的保留字有哪些类型,并举例说明。
〔解答保留字是在每种语言中规定了有特殊意义和功能的不允许再做其它用处的字符串;汇编语言的保留字主要有硬指令助记、伪指令助记符、运算符、寄存器名以及预定义符号等。
汇编语言对大小写不敏感。
如定义字节数和字符串的DB就是伪指令助记符。
〔习题3.4〕汇编语句有哪两种,每个语句由哪4个部分组成?〔解答〕汇编语句有执行性语句和说明性语句;执行性语句由标号、硬指令助记符、操作数和注释四部分组成;说明性语句由名字、伪指令助记符、参数和注释四部分组成〔习题3.5〕汇编语言程序的开发有哪4个步骤,分别利用什么程序完成、产生什么输出文件。
〔解答〕⒈编辑文本编辑程序汇编语言源程序.asm⒉汇编汇编程序目标模块文件.obj⒊连接连接程序可执行文件.exe或.com⒋调试调试程序应用程序〔习题3.6〕区分下列概念:(1)变量和标号(2)数值表达式和地址表达式(3)符号常量和字符串常量〔解答〕(1)变量是在程序运行过程中,其值可以被改变的量;标号是由用户自定义的标识符,指向存储单元,表示其存储内容的逻辑地址。
(2)数值表达式一般是由运算符连接的各种常数所构成的表达式,地址表达式是由名字、标号以及利用各种的操作符形成的表达式。
汇编语言程序设计教程(第3版)习题参考答案第1章汇编语言基础知识思考与练习1.计算机系统分哪几个层次?简述计算机系统的硬件结构。
1)数字逻辑层2) 微体系结构层3) 指令系统层4) 操作系统层5) 汇编语言层6) 高级语言层7) 应用层硬件系统是指构成计算机系统的物理实体或物理装置。
它由控制器、运算器、存储器、输入设备和输出设备等部件构成。
2.简述用汇编语言进行程序设计的必要性。
1)程序要具有较快的执行时间,或者只能占用较小的存储容量。
例如,操作系统的核心程序段,实时控制系统的软件,智能仪器仪表的控制程序等。
2)程序与计算机硬件密切相关,程序要直接、有效地控制硬件。
例如,I/O接口电路的初始化程序段,外部设备的低层驱动程序等。
3)大型软件需要提高性能、优化处理的部分。
例如计算机系统频繁调用的子程序、动态连接库等。
4)没有合适的高级语言或只能采用汇编语言的时候。
例如,开发最新的处理器程序时,暂时没有支持新指令的编译程序。
5)汇编语言还有许多实际应用,例如分析具体系统尤其是该系统的低层软件、加密解密软件、分析和防治计算机病毒等。
3.汉字编码主要分哪几类?每类的功能如何?汉字编码主要分为四类:汉字输入码、汉字交换码、汉字机内码和汉字字形码。
1)为了能直接使用西文标准键盘进行输入,就必须为汉字设计相应的编码方法,即用西文标准键盘上的字母数字串表示汉字的编码。
目前,汉字输入编码方法主要有三种:数字编码、拼音编码和字形编码。
2)汉字交换码:在不同汉字信息处理系统间进行汉字交换时所使用的编码,就是国标码。
无论采用哪种方法输入汉字,一旦输入到计算机中,必须采用统一的国标码标识每个汉字。
3)汉字机内码是汉字在设备或信息处理系统内部最基本的表达形式,是在设备和信息处理系统内部存储、处理、传输汉字用的编码。
4)字形编码也称为字模码,是用点阵表示的汉字字形代码,它是汉字的输出形式。
4.计算机的字长是怎么定义的,试举例说明。
汇编语言程序设计教程(第3版卜艳萍)参考答案汇编语言程序设计教程(第3版)习题参考答案第1章汇编语言基础知识思考与练习1. 计算机系统分哪几个层次?简述计算机系统的硬件结构。
1)数字逻辑层 2) 微体系结构层 3) 指令系统层 4) 操作系统层 5) 汇编语言层 6) 高级语言层 7) 应用层硬件系统是指构成计算机系统的物理实体或物理装置。
它由控制器、运算器、存储器、输入设备和输出设备等部件构成。
2. 简述用汇编语言进行程序设计的必要性。
1) 程序要具有较快的执行时间,或者只能占用较小的存储容量。
例如,操作系统的核心程序段,实时控制系统的软件,智能仪器仪表的控制程序等。
2) 程序与计算机硬件密切相关,程序要直接、有效地控制硬件。
例如,I/O接口电路的初始化程序段,外部设备的低层驱动程序等。
3) 大型软件需要提高性能、优化处理的部分。
例如计算机系统频繁调用的子程序、动态连接库等。
4) 没有合适的高级语言或只能采用汇编语言的时候。
例如,开发最新的处理器程序时,暂时没有支持新指令的编译程序。
5) 汇编语言还有许多实际应用,例如分析具体系统尤其是该系统的低层软件、加密解密软件、分析和防治计算机病毒等。
3. 汉字编码主要分哪几类?每类的功能如何?汉字编码主要分为四类:汉字输入码、汉字交换码、汉字机内码和汉字字形码。
1) 为了能直接使用西文标准键盘进行输入,就必须为汉字设计相应的编码方法,即用西文标准键盘上的字母数字串表示汉字的编码。
目前,汉字输入编码方法主要有三种:数字编码、拼音编码和字形编码。
2) 汉字交换码:在不同汉字信息处理系统间进行汉字交换时所使用的编码,就是国标码。
无论采用哪种方法输入汉字,一旦输入到计算机中,必须采用统一的国标码标识每个汉字。
3) 汉字机内码是汉字在设备或信息处理系统内部最基本的表达形式,是在设备和信息处理系统内部存储、处理、传输汉字用的编码。
4) 字形编码也称为字模码,是用点阵表示的汉字字形代码,它是汉字的输出形式。
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.为在一连续的存储单元中,依次存放数据41H,42H,43H,44H,45H,46H,可选用的数据定义语句是(D)A.DB 41,42,43,44,45,46 B.DW 4142H,4344H,4546HC.DW ‘AB’,‘CD’,‘EF’D.DW ‘BA’,‘DC’,‘FE’2.DA2 DB‘AB’,‘CD’┇MOV AX,WORD PTR DA2+1上述语句执行后AX中的值是(D)A.‘AD’B.‘BC’C.‘DA’D.‘CB’3.下列数据定义语句中可实现留空20H个字节存储单元的是(D)A.DB 20 DUP(?) B.DW 20H DUP(?)C.DB 10H DUP(4 DUP(?)) D.DD 08H DUP(?)4.如某存储器分段时,表示偏移地址是17位二进制代码,那么一个段最多的存储单元数是(D)A.32K字节B.32K字C.64K字节D.64K字5.下列寄存器中用来指示堆栈中任意数据区的偏移地址的是(B)A.BX B.BPC.SI D.DI6.下列指令中有语法错误的是(C)A.PUSH AX B.PUSH [20H+SI+BX]C.POP CS D.PUSH CS7.执行PUSH BP指令时,目的操作数的物理地址表达式是(D)A.16*SS+BP B.16*DS+BPC.16*CS+IP D.16*SS+SP8.把BL中的数据输出到端口8CH中正确指令是(C)A.OUT 8CH,BL B.IN 8CH,BLC.MOV AL,BL D.MOV AL,BLOUT 8CH,AL IN 8CH,AL9.结果为零的条件转移指令,其测试条件是(A)A.ZF=1 B.ZF=0C.SF=l D.SF=010.下面程序段完成测试DA-BYTE字节单元中数是否为负数,若是则将全l送DH中,否则全0送DH中,那么程序段中方框里应填的语句是MOV CH,0MOV CH,0FFHZERO:MOV DH,CH(C)A.JNZ ZERO B.JS ZEROC.JZ ZERO D.JC ZERO11.汇编源程序时,出现语法错误的语句是(C)A.MOV [BX+SI],BX B.MOV CL,[BP+DI]C.MOV CS,AX D.MOV DS,AX12.设SP初值为3050H,执行指令PUSH BX后,SP的值是(B)A.304FH B.304EHC.3048H D.3049H13.串操作指令中,每次操作后使SI/DI为减量应设置(C)A.DF=0 B.TF=1C.DF=1 D.TF=014.设AL=57H,BL=24H,执行指令SUB AL,BL后,寄存器内容为(B)A.AL=57H,BL=24H B.AL=33H,BL=24HC.AL=57H,BL=33H D.AL=33H,BL=015. 当执行ADD AX ,BX 指令后,若AX的内容为4E52H 时,设置的奇偶标志位PF=0 ,下面的叙述正确的是( A )A. 表示结果中含1 的个数是奇数B. 表示结果中含1 的个数是偶数C. 表示该数是奇数D. 表示结果中低8 位中含1 的个数是奇数16. 设物理地址(21000H)=20H, (21001H)=30H,(21002H)=40H 。
汇编语言程序设计答案问题1问题描述请编写一个汇编程序,实现将两个数字相加并输出结果的功能。
解答section .datanum1 db10num2 db20sum db0section .textglobal _start_start:; 加载 num1 到 ALmov al, [num1]; 加载 num2 到 BLmov bl, [num2]; 将 AL 和 BL 相加add al, bl; 将结果保存到 summov [sum], al; 输出结果mov eax, 4mov ebx, 1mov ecx, summov edx, 1int 0x80; 程序退出mov eax, 1xor ebx, ebxint 0x80问题2问题描述请编写一个汇编程序,实现从用户输入获取一个数字,并将其乘以2后输出结果。
解答section .datanum db0buf resb 2section .textglobal _start_start:; 读取用户输入mov eax, 3; sys_readmov ebx, 0; 从标准输入读取mov ecx, buf ; 存储用户输入的缓冲区mov edx, 2; 读取的最大字节数int 0x80; 将用户输入的字符串转换为数字mov al, [buf]sub al, '0'mov [num], al; 将数字乘以2add [num], al; 输出结果mov eax, 4mov ebx, 1mov ecx, nummov edx, 1int 0x80; 程序退出mov eax, 1xor ebx, ebxint 0x80问题3问题描述请编写一个汇编程序,实现从用户输入两个数字并计算它们的加法和乘法,并输出结果。
解答section .datanum1 db0num2 db0sum db0product db0section .textglobal _start_start:; 从用户输入读取第一个数字mov eax, 3; sys_readmov ebx, 0; 从标准输入读取mov ecx, num1 ; 存储用户输入的缓冲区 mov edx, 1; 读取的最大字节数int 0x80; 将用户输入的字符串转换为数字mov al, [num1]sub al, '0'mov [num1], al; 从用户输入读取第二个数字mov eax, 3; sys_readmov ebx, 0; 从标准输入读取mov ecx, num2 ; 存储用户输入的缓冲区 mov edx, 1; 读取的最大字节数int 0x80; 将用户输入的字符串转换为数字sub al, '0'mov [num2], al; 计算加法add al, [num2]mov [sum], al; 计算乘法xor eax, eaxmov al, [num1]mov bl, [num2]mul blmov [product], al; 输出加法结果mov eax, 4mov ebx, 1mov ecx, summov edx, 1int 0x80; 换行mov eax, 4mov ebx, 1mov ecx, newline mov edx, 1int 0x80; 输出乘法结果mov eax, 4mov ebx, 1mov edx, 1int 0x80; 程序退出mov eax, 1xor ebx, ebxint 0x80section .datanewline db10以上是三个简单的汇编语言程序设计问题的答案,分别实现了加法、乘法、以及加法和乘法的组合。
汇编语⾔程序设计练习题及答案⼀、单项选择题:1.设DS=5788H,偏移地址为94H,该字节的物理地址是 B 。
(A)57974H (B)57914H(C)5883H (D)58ECH2.IP指令指针寄存器是属于 D 。
(A)通⽤寄存器(B)段寄存器(C)变址寄存器(D)控制寄存器3.下⾯有语法错误的指令是 D 。
(A)ADD AL,AH(B)ADD [BX+3],AL(C)ADD AH,[DI](D)ADD [BX],DA1(DA1是变量名)4.完成对DX的有符号数除以2的指令是 B 。
(A)IDIV 2 (B)SAR DX,1(C)DIV 2 (D)RCR DX,15.使进位位置1的指令是 C 。
(A)CLC (B)CMC(C)STC (D)NOP6.设AL=-100,要使AL=100应执⾏的指令是 A 。
(A)NEG AL (B)NOT AL(C)INC AL (D)DEC AL7.在条件转移指令中,结果为负数则转移的指令是 C 。
(A)JNS (B)JZ(C)JS (D)JC8.下⾯的XCHG指令中,语法正确的是 B 。
(A)XCHG AL,DS (B)XCHG BH,[BX](C)XCHG AL,OFH (D)XCHG BUF1,BUF29.⼀条指令中⽬的操作数不允许使⽤的寻址⽅式是 B 。
(A)寄存器寻址(B)⽴即数寻址(C)变址寻址(D)直接寻址10.设SP=1FFFH,执⾏下列指令后,SP寄存器的值是 1fffd 。
(这道题没有正确答案,正确答案为1ffd,可能印错了)┇POPFPUSH BXPUSH BX┇(A)2000H (B)2002H(C)1FFCH (D)1FFEH11.LES SI ,[2000H]指令的全部功能是 C 。
(A)把地址2000H送SI(B)把地址2000H字单元的内容送SI(C)把地址2000H字单元内容送SI,把2002H字单元内容送ES(D)把地址2000H字单元内容送ES,把2002H字单元内容送SI12.设AL=04H,CL=0F8H,执⾏MUL CL指令后,结果是 C 。
习题参考答案1第1章1-1汇编的主要功能:输入:汇编语言源文件输出:目标文件处理:对源文件进行语法检查;将符号指令翻译为机器指令。
连接的主要功能:输入:1个或多个目标文件与库文件输出:可执行文件处理:浮动地址的重定位;多模块的连接。
1-2 (1)2EH (2)0D2H (3)0FFH(4)80H (5)7FH (6)0FEH1-3 (1)7FH (2)0FF80H (3)0FFFFH285286(4)0FFD2H (5)8000H (6)0FFH1-4 无符号数范围:0~2n-1;带符号数范围:-2n−1~2n−1-11-5 (1)压缩BCD码:58H;非压缩BCD码:x5x8H。
(2)压缩BCD码:1624H;非压缩BCD码:x1x6x2x4H。
1-6 (1)字符'1'的ASCII码;十进制数31的压缩BCD码;十进制数1的非压缩BCD码;十进制数49的十六进制表示。
(2)十进制数-1的8位二进制补码表示;带符号数255的16位二进制补码表示;无符号数255的8位二进制形式。
(3)十进制数-1的16位二进制补码表示;带符号数65535的32位二进制补码表示;无符号数65535的16位二进制形式。
1-7 (1)作为无符号数为159,等值的16位和32位形式均为9FH;作为带符号数为-97,等值的16位和32位形式分别为0FF9FH与0FFFFFF9FH。
(2)作为无符号数和带符号数均为104,等值的16位和32位形式均为68H。
(3)作为无符号数为192,等值的16位和32位形式均为0C0H;作为带符号数为-64,等值的16位和32位形式分别为0FFC0H与0FFFFFFC0H。
1-8 (1)AND 0FH (2)OR 30H(3)右移4位可得高位的值;将原值AND 0FH可得低位的值。
(4)XOR 00101010B(5)AND 8000H,若结果为0,则是正数,否则为负数。
第2章2-1 系统总线是CPU与内存和I/O子系统之间进行数据交换的通道,包括数据总线、地址总线和控制总线,分别负责在CPU与内存和I/O子系统之间传送数据、地址和控制信息。
汇编语言程序设计试题答案汇编语言程序设计试题一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。
每小题2分,共50分)1.CPU发出的访问存储器的地址是( )A.偏移地址B.物理地址C.逻辑地址D.段地址2.使计算机执行某种操作的命令是( )A.伪指令B.标号C.指令D.助记符3.若AX=3500H,CX=56B8H,当AND AX,CX指令执行后,AX=( )A. 1400HB. 77F8HC. 0000HD. 0FFFFH4.计算机处理问题中会碰到大量的字符、符号,对此必须采用统一的二进制编码。
目前,微机中普遍采用的是( )码。
A. BCD码B.二进制码C.十六进制码D.ASCII码5.下列关于8086CPU的工作原理的描述错误的是( )。
A.汇编程序员可以通过对各种寄存器中内容的修改实现对CPU 的控制。
B.CPU在访问内存时,采用“段地址*16+偏移地址”的形式给出要访问的内存单元的物理地址。
C.任意时刻,CS:IP指向的内容即是此刻CPU正在执行的指令。
D.传送指令能够更改所有通用寄存器的内容。
6.一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是()A.12C5BH B.12C59H C.12B6BH D.12BFEH7. 16位结构的CPU 不一定具备的特性是( )。
A. 运算器一次最多可以处理16位的数据B. 寄存器的最大宽度为16位C. 地址总线为16根D. 寄存器和运算器之间的通路为16位8. 下列指令的书写正确的是()。
A. push alB. mov cs:[0],ds:[10]C. pop siD. mov ds:[0],29.在DEBUG工具中,显示寄存器内容的命令是()。
A. GB. DC. TD. R10. 能够将ax中的内容送到内存0000:0200H处的指令序列是()。
A.mov ds,0mov bx,200hmov [bx],axB.mov ax,200hmov ds,axmov bx,0mov [bx],axC.mov ax,20hmov ds,axmov bx,0mov [bx],axD.mov bx,20hmov ds,bxmov bx,0mov [bx],ax11.若栈顶的物理地址为20100H,当执行完指令PUSH AX后,栈顶的物理地址为()。
A. 20098HB. 20102HC. 20100HD. 200FEH12.执行下列指令后AL寄存器中的值是()MOV AL, 0BFHOR AL, 0FCHA. 0ACHB.0FFHC. 0DCHD. 0BBH13. 已知(DS)=2000H,(BX)=1256H,(SI)=528FH,则执行指令JMP BX后,IP 寄存器的内容是()。
A. 1256HB. 2000HC. 3256HD. 528FH14.在程序执行过程中,IP寄存器中始终保存的是()A.上一条指令的首地址B.下一条指令的首地址C.正在执行指令的首地址 D.需计算有效地址后才能确定地址15.8088/8086存储器分段,每个段不超过()A.64K个字 B.32k个字节C.64k个字节 D.1兆个字节16.关于伪指令相关描述错误的是()。
A.伪指令没有对应的机器码,只用来指导汇编过程的。
B.伪指令由编译器处理,在程序中可有可无。
C.编译器要通过执行伪指令才能对源程序进行相应的处理操作,完成编译工作。
D.伪指令是汇编语言源程序不可缺少的组成部分。
17.下列关于堆栈的说法,错误的是()A.以“先入后出”为原则。
B.栈区最高地址单元的前一个单元为栈底。
C.运行中SP寄存器动态跟踪栈顶位置。
D.压栈和弹出都是以字节为单位。
18.关于8086/8088微机系列,下列说法哪个是正确的()A.一个存储单元由16个二进制位组成,简称字。
B.当存储一个字数据时,低字节放高地址位,高字节放低地址位。
C.在内存中,可以无限分配段,且段的大小不受限制。
D.段与段之间可以邻接,也可以重叠。
19.1KB的存储器有( )个存储单元?A.1000 B. 1024 C. 512 D. 25620. 下列程序中,出现逻辑错误的是( )。
A. assume cs:codecode segmentmov ax,2add ax,axmov ax,4c00hint 21hcodeendB. assume cs:code code segment mov ax,2add ax,axcode endsendC. aume cs:code code segment mov ax,2add ax,axmov ax,4c00hint 21hcode endsendD. assume cs:code code segment mov ax,2add ax,axmov ax,4c00hint 21hcode ends21. 对于如下程序assume cs:code code segment start:mov ax,code mov ds,axmov ax,0020hmov es,axmov bx,0s:mov al,[bx]mov es:[bx],alinc bxloop smov ax,4c00hint 21hcode endsend下列说法正确的是( )。
A.指令mov ax,code改为mov ax,start对程序要实现的功能没有任何影响。
B.程序不能通过编译,因为在loop指令之前,没有对寄存器cx进行设定。
C.程序实现的功能是将程序的所有指令复制到内存中以0:200h为起始地址的一段内存空间中。
D.程序实现的功能是用内存中以0:200h为起始地址的一段内存空间中的数据将程序的所有指令覆盖。
22.在Intel8086环境下,下列说法合理的是()。
A.汇编语言程序载入内存后处于64K空间以外的数据和指令将无法使用和执行。
B.一个数据段命名为data,此标号代表这个数据段在内存中的起始地址。
C.如果载入的程序没有返回语句,那么当程序代码执行完毕,将继续读取后续内存空间存储的指令到CPU内部作为指令执行下去,直到遇到返回指令为止。
D.用DW定义进行的数据,只能够以字为单位访问。
23.若将以2000H为段地址的整个段空间当作栈使用,那么寄存器SP的初始值最合理的设置是( )。
A. 0001HB. 0000HC. FFFFHD. FFFEH24.生成EXE之后用Debug加载后,查看寄存器内容如下:ds=0c3e es=0c3e ss=0b4e cs=0b4f ip=0000程序的起始地址的段地址是()。
A. 0c4eB. 0c3eC. 0c4fD. 025. 在Intel8086环境下,对指令mov ax,[bx]描述错误的是( )。
A.指令中,源操作数的段地址默认为ds中的内容B.指令中,源操作数的偏移地址为bx中的内容C.指令执行后,(al)=((ds)*16+(bx)),(ah)=((ds)*16+(bx)+1)D.指令执行后,((ds)*16+(bx))=(al),((ds)*16+(bx)+1)=(ah)二、填空题(每空2分,共30分)1.通常所说的计算机系统包括___硬件_____和___软件_____两大部分。
2.8086/8088存储器分四个段,这四个段的段名所对应的段寄存器分别是__DS______、____SS____、_____CS___、__ES____。
3.若要源程序从标号START开始执行,源程序结束伪指令的格式为 __END START______。
4.8086的地址总线有20根,寻址范围为____1M _______字节。
5.汇编语言源程序需经过___编译_________程序汇编,__连接_______程序连接才能生成可执行文件。
6.十进制数369转换成8位二进制数为01110001B________,转换成对应的十六进制数为__71H________。
7. 存储器某单元的地址表示为2314H:4132H,则它的偏移地址=__4132H_______,物理地址=__27272H________。
8. mov cx,4s: mov ax,[bx]add bx,2loop s上面指令序列,当指令第一次执行到add bx,2时cx的值__5___。
三、阅读程序题(每题5分,共10分)1.已知21000h处字单元的内容为 BE00H,对于如下程序:(1) mov ax,2000h(2) mov ds,ax(3) mov bx,1000h(4) mov ax,[bx](5) inc bx(6) inc bx(7) mov [bx],ax(8) inc bx(9) inc bx(10) mov [bx],ax(11) inc bx(12) mov [bx],al(13) inc bx(14) mov [bx],al程序执行后,内存中字单元2000:1005中的内容为__0000H____。
2. assume cs:codecode segmentstart: mov ax,3jmp s1s: mov bx,0mov ax,bxs1: mov cx,3s2: add ax,2loop s2s3: mov ax,4c00hint 21hcode endsend s上面代码执行到s3处的指令之前,ax的值是_6____。
四、完善程序题(每题5分,共10分)1.完善下列程序:实现一次用内存0:0--0:15单元中的数据改写程序中定义的数据。
assume cs:codesgcodesg segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hstart:mov ax,0mov ds,axmov bx,0mov cx,8mov ax,ds:[bx]mov cs:[bx],ax___________add bx,2loop smov ax,4c00hint 21hcodesg endsend start2.完善下列程序:实现计算123与456的乘积。
assume cs:codecode segmentmov ax,0Mov cx,567S:add ax,234Loop smov ax,4c00h int 21hcode endsend。