新版汇编语言程序设计习题答案(钱晓捷主编)
新版汇编语言程序设计习题答案(钱晓捷主编)电子教案
新版汇编语言程序设计习题答案(钱晓捷主编)新版汇编语言程序设计习题答案(钱晓捷主编)第一章汇编语言基础知识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系列微处理器在指令集方面的发展。
32位汇编习题04
13
习题4.17-3
• 方法2:使用数字输入输出子程序
again: call readuid ;call readsid cmp eax,0 ;数字 < 0? jb erdisp ;jl erdisp cmp eax,9 ;数字 > 9? ja erdisp ;jg erdisp call dispuid ;call dispsid jmp done erdisp: mov eax,offset ermsg call dispmsg jmp again
10
习题解答
习题4.15-2
• 编程实现指令CDQ,将EAX符号扩展到EDX
(2)使用移位等指令进行优化编程。 • 方法1: mov edx,eax sar edx,31 • 方法2: rol eax,1 rcr edx,1 sar edx,31 ror eax,1
11
习题解答
习题4.17-1
• 编写一个程序,先提示输入数字“ Input
6
习题解答
4.3 填空题-2
( 4 )“ CMP EAX,3721H”指令之后是 JZ 指令,发生转 移的条件是EAX=________,此时ZF=_______。 • 3721H,1 (5)执行“SHR EBX,4”指令后, JNC发生转移,说明 EBX的D3=_____。 •0 ( 6 ) 在 EDX 等 于 0 时 转 移 , 可 以 使 用 指 令 “ CMP EDX,____” 、也可以使用“ TEST EDX,_____”构成 条件,然后使用JE指令实现转移。 • 0,EDX
Number : 0 ~ 9”,然后在下一行显示输入的数字,结束;如 果不是键入了 0 ~ 9 数字,就提示错误“Error!”, 继续等待输入数字。 • 方法1:使用字符输入输出子程序 ;数据段 inmsg byte 'Input number(0~9): ',0 ermsg byte 0dh,0ah,'Error! Input again: ',0 ;代码段 mov eax,offset inmsg ;提示输入数字 call dispmsg
钱晓捷新版汇编语言程序设计习题答案(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-5章【课后答案】
新版汇编语言程序设计【课后习题答案】第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〕汇编语言与高级语言相比有什么优缺点?〔解答〕汇编语言与高级语言相比的优点:由于汇编语言本质就是机器语言,它可以直接地、有效地控制计算机硬件,因而容易产生运行速度快,指令序列短小的高效目标程序,可以直接控制计算机硬件部件,可以编写在“时间”和“空间”两方面最有效的程序。
32位汇编语言习题及答案(全部)(钱晓捷版)
9
习题面哪些是程序员可以使用的自
定义标识符。 FFH,DS,Again,next,@data,h_ascii,6364b, flat • 解答: • FFH,Again,next,h_ascii • 其他符号错误的原因:
DS是数据段寄存器名 6364b是数字开头 @data是汇编语言使用预定义符号,表示数据段地址 flat是表示平展存储模型的关键字
byte
'---+-------------------------------',
习题解答
习题2.14解答2
„„ ca ='2' cas =20h byte ca,'0 |',cas,20h,cas+1,20h,cas+2,20h, cas+3,20h,cas+4,20h,cas+5,20h,cas+6,20h,cas+7,20h byte cas+8,20h,cas+9,20h,cas+0ah,20h,cas+0bh,20h, cas+0ch,20h,cas+0dh,20h,cas+0eh,20h,cas+0fh,20h,13,10 cas ca =cas+10h =ca+1 byte ca,'0 |',cas,20h,cas+1,20h,cas+2,20h, cas+3,20h,cas+4,20h,cas+5,20h,cas+6,20h,cas+7,20h byte cas+8,20h,cas+9,20h,cas+0ah,20h,cas+0bh,20h, cas+0ch,20h,cas+0dh,20h,cas+0eh,20h,cas+0fh,20h,13,10 „„ 23 习题解答
汇编程序设计钱晓捷(第四版)第2篇课后答案
第2章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(2)mov ax,bx(3)mov ax,[1200h](4)mov ax,[bx](5)mov ax,[bx+1100h](6)mov ax,[bx+si](7)mov ax,[bx][si+1100h]〔解答〕(1)AX=1200H(2)AX=0100H(3)AX=4C2AH ;偏移地址=bx=0100h(4)AX=3412H ;偏移地址=bx=0100h(5)AX=4C2AH ;偏移地址=bx+1100h=1200h(6)AX=7856H ;偏移地址=bx+si=0100h+0002h=0102h(7)AX=65B7H ;偏移地址=bx+si+1100h=0100h+0002h+1100h=1202h〔习题2.2〕指出下列指令的错误(1)mov cx,dl(2)mov ip,ax(3)mov es,1234h(4)mov es,ds(5)mov al,300(6)mov [sp],ax(7)mov ax,bx+di(8)mov 20h,ah〔解答〕(1)两操作数类型不匹配(2)IP指令指针禁止用户访问(3)立即数不允许传给段寄存器(4)段寄存器之间不允许传送(5)两操作数类型不匹配(6)目的操作数应为[ SI ](7)源操作数应为[BX+DI](8)立即数不能作目的操作数〔习题2.3〕已知数字0 ~ 9对应的格雷码依次为:18H、34H、05H、06H、09H、0AH、0CH、11H、12H、14H,它存在于以table为首地址(设为200H)的连续区域中。
请为如下程序段的每条指令加上注释,说明每条指令的功能和执行结果。
新版汇编语言程序设计钱晓捷第3章习题答
第3章汇编语言程序格式〔习题3.1〕伪指令语句与硬指令语句的本质区别是什么?伪指令有什么主要作用?〔解答〕伪指令语句与硬指令语句的本质区别是能不能产生CPU动作;伪指令的作用是完成对如存储模式、主存变量、子程序、宏及段定义等很多不产生CPU动作的说明,并在程序执行前由汇编程序完成处理。
〔习题3.2〕什么是标识符,汇编程序中标识符怎样组成?〔解答〕为了某种需要,每种程序语言都规定了在程序里如何描述名字,程序语言的名字通常被称为标识符;汇编语言中的标识符一般最多由31个字母、数字及规定的特殊符号(如-,$,?,@)组成,不能以数字开头。
〔习题3.3〕什么是保留字,汇编语言的保留字有哪些类型,并举例说明。
〔解答保留字是在每种语言中规定了有特殊意义和功能的不允许再做其它用处的字符串;汇编语言的保留字主要有硬指令助记、伪指令助记符、运算符、寄存器名以及预定义符号等。
汇编语言对大小写不敏感。
如定义字节数和字符串的DB就是伪指令助记符。
〔习题3.4〕汇编语句有哪两种,每个语句由哪4个部分组成?〔解答〕汇编语句有执行性语句和说明性语句;执行性语句由标号、硬指令助记符、操作数和注释四部分组成;说明性语句由名字、伪指令助记符、参数和注释四部分组成〔习题3.5〕汇编语言程序的开发有哪4个步骤,分别利用什么程序完成、产生什么输出文件。
〔解答〕⒈编辑文本编辑程序汇编语言源程序.asm⒉汇编汇编程序目标模块文件.obj⒊连接连接程序可执行文件.exe或.com⒋调试调试程序应用程序〔习题3.6〕将第2章习题2.36采用简化段定义格式编写成一个完整的源程序。
〔解答〕;简化段定义格式.model small ; 定义程序的存储模式(小模式).stack ; 定义堆栈段(默认1024个字节).data ; 定义数据段str1 db 'Input Number:0~9 : ',0dh,0ah,'$'str2 db 'Error!',0dh,0ah,'$'.cade ; 定义代码段.startup ; 说明程序的起始点,建立ds,ss的内容。
汇编语言程序设计(第二版) 钱晓捷 习题答案
汇编语言程序设计(第二版) 钱晓捷 习题答案第二章(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, 根据结果影响其他标志位。
新版汇编语言程序设计【课后习题答案】 钱晓捷 主编 电子工业出版社
新版汇编语言程序设计【课后习题答案】钞票晓捷主编电子工业出版社第2章8086的指令系统〔全〕第2章8086的指令系统〔习题2.1〕DS=2000H、BX=0100H、SI=0002H,存储单元[20210H]~[20213H]依次存放12345678H,[21200H]~[21203H]依次存放2A4CB765H,讲明以下每条指令执行完后AX存放器的内容。
〔1〕movax,1200h〔2〕movax,bx〔3〕movax,[1200h]〔4〕movax,[bx]〔5〕movax,[bx+1100h]〔6〕movax,[bx+si]〔7〕movax,[bx][si+1100h]〔解答〕〔1〕AX=1200H〔2〕AX=0100H〔3〕AX=4C2AH ;偏移地址=bx=0100h〔4〕AX=3412H ;偏移地址=bx=0100h〔5〕AX=4C2AH ;偏移地址=bx+1100h=1200h〔6〕AX=7856H ;偏移地址=bx+si=0100h+0002h=0102h〔7〕AX=65B7H ;偏移地址=bx+si+1100h=0100h+0002h+1100h=1202h〔习题2.2〕指出以下指令的错误〔1〕movcx,dl〔2〕movip,ax〔3〕moves,1234h〔4〕moves,ds〔5〕moval,300〔6〕mov[sp],ax〔7〕movax,bx+di〔8〕mov20h,ah〔解答〕〔1〕两操作数类型不匹配〔2〕IP指令指针禁止用户访咨询〔3〕立即数不准许传给段存放器〔4〕段存放器之间不准许传送〔5〕两操作数类型不匹配〔6〕目的操作数应为[SI]〔7〕源操作数应为[BX+DI]〔8〕立即数不能作目的操作数〔习题2.3〕数字0~9对应的格雷码依次为:18H、34H、05H、06H、09H、0AH、0CH、11H、12H、14H,它存在于以table为首地址〔设为200H〕的连续区域中。
新版汇编语言程序的设计钱晓捷第3章习题答
第3章汇编语言程序格式〔习题3.1〕伪指令语句与硬指令语句的本质区别是什么?伪指令有什么主要作用?〔解答〕伪指令语句与硬指令语句的本质区别是能不能产生CPU动作;伪指令的作用是完成对如存储模式、主存变量、子程序、宏及段定义等很多不产生CPU动作的说明,并在程序执行前由汇编程序完成处理。
〔习题3.2〕什么是标识符,汇编程序中标识符怎样组成?〔解答〕为了某种需要,每种程序语言都规定了在程序里如何描述名字,程序语言的名字通常被称为标识符;汇编语言中的标识符一般最多由31个字母、数字及规定的特殊符号(如-,$,?,)组成,不能以数字开头。
〔习题3.3〕什么是保留字,汇编语言的保留字有哪些类型,并举例说明。
〔解答保留字是在每种语言中规定了有特殊意义和功能的不允许再做其它用处的字符串;汇编语言的保留字主要有硬指令助记、伪指令助记符、运算符、寄存器名以及预定义符号等。
汇编语言对大小写不敏感。
如定义字节数和字符串的DB就是伪指令助记符。
〔习题3.4〕汇编语句有哪两种,每个语句由哪4个部分组成?〔解答〕汇编语句有执行性语句和说明性语句;执行性语句由标号、硬指令助记符、操作数和注释四部分组成;说明性语句由名字、伪指令助记符、参数和注释四部分组成〔习题3.5〕汇编语言程序的开发有哪4个步骤,分别利用什么程序完成、产生什么输出文件。
〔解答〕⒈编辑文本编辑程序汇编语言源程序.asm⒉汇编汇编程序目标模块文件.obj⒊连接连接程序可执行文件.exe或.⒋调试调试程序应用程序〔习题3.6〕将第2章习题2.36采用简化段定义格式编写成一个完整的源程序。
〔解答〕;简化段定义格式.model small ; 定义程序的存储模式(小模式).stack ; 定义堆栈段(默认1024个字节).data ; 定义数据段str1 db 'Input Number:0~9 : ',0dh,0ah,'$'str2 db 'Error!',0dh,0ah,'$'.cade ; 定义代码段.startup ; 说明程序的起始点,建立ds,ss 的容。
大全语言程序设计钱晓捷课后答案
大全语言程序设计钱晓捷课后答案TYYGROUP system office room 【TYYUA16H-TYY-TYYYUA8Q8-汇编语言程序设计(第二版)钱晓捷习题答案第二章(01)(1)AX=1200h(2)AX=0100h(3)AX=4C2Ah(4)AX=3412h(5)AX=4C2Ah(6)AX=7856h(7)AX=65B7h(1)两操作数类型不匹配(2)IP指令指针禁止用户访问(3)立即数不允许传给段寄存器(4)段寄存器之间不允许传送(5)两操作数类型不匹配(6)目的操作数应为[ BP ](7)源操作数应为 [BX+DI](8)立即数不能作目的操作数lea bx,table?;获取table的首地址,BX=200Hmov al,8?;传送欲转换的数字,AL=8xlat?;转换为格雷码,AL=12H堆栈是一种按“先进后出”原则存取数据的存储区域。
堆栈的两种基本操作是压栈和出栈,对应的指令是PUSH和POP。
mov ax,8057hpush axmov ax,0f79hpush axpop bx;bx=0f79hpop [bx] ;DS:[0f79h]=8057hAL=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 1 AL=00h 0 1 0 0 1W=X+Y+24-Z(1)ADD DX,BX(2)ADD AL,[BX+SI](3)ADD [BX+0B2H],CX(4)ADD WORD PTR [0520H],3412H(5)ADD AL,0A0H;为了避免与操作数地址混淆,将题中X,Y,Z,V 字操作数改为A,B,C,D mov ax,X;ax=A?imul Y;dx,ax = A*B(将操作数看作符号数,以下同)mov cx,axmov bx,dx;bx,ax <-- dx,ax =A*Bmov ax,Z;ax = C?cwd;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-540?mov ax, V;ax= D?cwd;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存余数;(1)xchg的操作数不能是立即数(2不能对CS直接赋值(3)两个操作数不能都是存储单元(4)堆栈的操作数不能是字节量(5)adc的操作数不能是段寄存器(6)没有确定是字节还是字操作(7)in不支持超过FFH的直接寻址(8)out只能以AL/AX为源操作数第二章(02)2. 其他逻辑指令使CF=OF=0, 根据结果影响其他标志位。
新版汇编语言程序设计1-5章【课后答案】
新版汇编语言程序设计【课后习题答案】第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〕汇编语言与高级语言相比有什么优缺点?〔解答〕汇编语言与高级语言相比的优点:由于汇编语言本质就是机器语言,它可以直接地、有效地控制计算机硬件,因而容易产生运行速度快,指令序列短小的高效目标程序,可以直接控制计算机硬件部件,可以编写在“时间”和“空间”两方面最有效的程序。
新版汇编语言程序设计习题答案(钱晓捷主编)
新版汇编语言程序设计习题答案(钱晓捷主编)第一章汇编语言基础知识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章 第2章 第3章 第4章 第5章 第6章 第7章 汇编语言基础知识 8086的指令系统 汇编语言程序格式 基本汇编语言程序设计 高级汇编语言程序设计 32位指令及其编程 汇编语言与C/C++的混合编程
教学特点
采用汇编程序MASM 6.15 采用简化段定义源程序格式 强调对基本指令的理解和掌握 介绍汇编系统和伪指令的基本内容 新增32位指令、Windows编程 引出与Visual C++的混合编程 强调上机实践,要求熟练进行编程和调试 运用多媒体教学手段
BCD码很直观
BCD码:0100 1001 0111 1000.0001 0100 1001 十进制真值: 4978.149 BCD码便于输入输出,表达数值准确
第1章
ASCII码(美国标准信息交换码)
标准ASCII码用7位二进制编码,有128个 不可显示的控制字符
前32个和最后一个编码 回车CR:0DH 换行LF:0AH 响铃BEL:07H
汇编语言程序员看到的是端口(I/O地址)
第1章
寄存器(Register)
寄存器是CPU内部的高速存储单元 它们为处理器提供各种操作所需要的数据或 地址等信息 汇编语言程序采用它们各自的符号名
16位Intel 8086/80286 CPU中有 AX BX CX DX SI DI BP SP 32位80386/80486/Pentium系列 CPU中有 EAX EBX ECX EDX ESI EDI EBP ESP
第1章
端口(Port)
I/O接口电路由接口寄存器组成,需要用编 号区别各个寄存器:编号=地址 I/O地址是接口电路中寄存器的编号 端口是I/O地址的通俗说法 系统通过这些端口与外设进行通信 采用十六进制数来表达端口
汇编语言程序设计(钱晓捷)课后答案.docx
2.5
mov ax,8057h
PuSh ax mov ax,0f79h
mov ax,8057h
PUSh ax mov ax,0f79h PUSh ax pop bx pop [bx] 2.6
AL=89h CF ZF AL=12h10
AL=Oafh00
非压缩BCD码的O〜9是:Ooh〜09h
方法一:
and al,0fh;实现ASCII到非压缩BCD码的转换
Or al,30h;实现非压缩BCD码到ASCII的转换
方法二:
xor al,30h;求反D5D4位,其他不变
;即高4位为3,则变为0;高4位为0,则变为3
mov cl,4
agai n: Shr dx,1;实现逻辑右移
add dx,si
dx=7*bx+3*axdx=0088h0 0 0 01
1.左移N次相当于乘于2的N次方,右左移N次相当于除乘于2的N次方。
2.移位指令根据是否移入“倒CF,设置CF,根据移位后的结果影响SF,ZF,PF°根据最高符号位是否改变设置OF,如改变0F=1.
3., U?表示无定义,,-?表示无影响。
(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
16/32位微机原理、汇编语言及接口技术 钱晓捷 第2版 课后习题答案
(F18A6.6)16 (11110001100010100110.0110) 2 (F18A6.6)16 (989350.375)10
1.12 解: +37 -37 原码 00100101/25H 10100101/A5H 反码 00100101/25H 11011010/DAH 补码 00100101/25H 11011011/DBH
4
在用户编程过程中采用的“段地址:偏移地址”的形式称为逻辑地址。 将逻辑地址中的段地址左移 4 位,加上偏移地址就得到物理地址。 1MB 最多能分成 65536 个逻辑段。 2.6 代码段:存放程序的指令序列; 堆栈段:确定堆栈所在的主存储区; 数据段:存放当前运行程序的数据; 附加段:附加数据段,用于数据保存。另外串操作指令将其作为目的操作数的存放区。 2.7 8088 的存储空间分段管理,程序设计时采用逻辑地址。由于段地址在默认的或指定的段 寄存器中,所以只需要偏移地址,称为有效地址 EA. 操作数在主存中有以下几种寻址方式:直接寻址、寄存器间接寻址、寄存器相对寻址、基 址变址寻址、相对基址变址寻址。 2.8 (1)立即数寻址 ax:1200H (2)寄存器寻址 ax:0100H (3)存储器直接寻址 ax:4C2AH (4)寄存器间接寻址 ax:3412H (5)寄存器间接寻址 ax:4C2AH (6)基址变址寻址 ax:7856H (7)相对基址变址寻址 ax:65B7H 2.9 (1)cx 为字寄存器,dl 为字节寄存器,类型不匹配。 (2)mov 指令的目的操作数只能是寄存器或者主存单元,ip 是指针。 (3)不允许立即数到段寄存器的传送。 (4)不允许段寄存器之间的直接传送。 (5)数据溢出。 (6)sp 不能用于寄存器间接寻址。 (7)格式不对。应为:mov ax,[bx+di] (8)mov 指令的操作数不能是立即数。 2.10 (1)bx 得到 table 的偏移地址,bx=200H. (2)将立即数 8 送到 al。 (3)换码,al=12H. 2.11 (1)al=89H (2)al=12H,cf=1,zf=0,sf=0,of=1,pf=1 (3)al=0AFH,cf=0,zf=0,sf=1,of=0,pf=1
新版汇编语言程序设计1-4章【课后答案】
新版汇编语言程序设计【课后习题答案】第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〕汇编语言与高级语言相比有什么优缺点?〔解答〕汇编语言与高级语言相比的优点:由于汇编语言本质就是机器语言,它可以直接地、有效地控制计算机硬件,因而容易产生运行速度快,指令序列短小的高效目标程序,可以直接控制计算机硬件部件,可以编写在“时间”和“空间”两方面最有效的程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
新版汇编语言程序设计习题答案(钱晓捷主编)第一章汇编语言基础知识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.13、什么是DOS和ROM-BIOS?1.14、简述PC机最低1MB主存空间的使用情况。
1.15、罗列8086CPU的8个8位和16位通用寄存器,并说明各自的作用。
1.16、什么是标志,它有什么用途?状态标志和控制标志有什么区别?画出标志寄存器FLAGS,说明各个标志的位置和含义。
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.18、字和双字在存储器中如何存放,什么是“小端方式”?对字和双字存储单元,什么是它们的对齐地址?为什么要对齐地址?1.19、什么是8086中的逻辑地址和物理地址?逻辑地址如何转换成物理地址?请将如下逻辑地址用物理地址表达:(1)FFFFh:0 (2)40h:17h (3)2000h:4500h (4)B821h:4567h1.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)的连续区域中。
请为如下程序段的每条指令加上注释,说明每条指令的功能和执行结果。
lea bx,table ;获取table的首地址,BX=200Hmov al,8 ;传送欲转换的数字,AL=8xlat ;转换为格雷码,AL=12H2.4什么是堆栈,它的工作原则是什么,它的基本操作有哪两个,对应哪两种指令?堆栈是一种按“先进后出”原则存取数据的存储区域。
堆栈的两种基本操作是压栈和出栈,对应的指令是PUSH和POP。
2.5已知SS = FFA0H、SP = 00B0H,画图说明执行下面指令序列时,堆栈区和SP的内容如何变化?mov ax,8057hpush axmov ax,0f79hpush axpop bx ;bx=0f79hpop [bx] ;DS:[0f79h]=8057h2.6 给出下列各条指令执行后AL值,以及CF、ZF、SF、OF和PF的状态:mov al,89h AL=89h CF ZF SF OF PFadd al,al AL=12h 1 0 0 1 1add al,9dh AL=0afh 0 0 1 0 1cmp al,0bch AL=0afh 1 0 1 0 1sub al,al AL=00h 0 1 0 0 1dec al AL=0ffh 0 0 1 0 1inc al AL=00h 0 1 0 0 12.7 设X、Y、Z均为双字数据,分别存放在地址为X、X+2;Y、Y+2;Z、Z+2的存储单元中,它们的运算结果存入W单元。
阅读如下程序段,给出运算公式。
mov ax,Xmov dx,X+2add ax,Yadc dx,Y+2add ax,24adc dx,0sub ax,Zsbb dx,Z+2mov W,axmov W+2,dxW=X+Y+24-Z2.8请分别用一条汇编语言指令完成如下功能:(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器。
ADD DX,BX (2)用寄存器BX和SI的基址变址寻址方式把存储器的一个字节与AL寄存器的内容相加,并把结果送到AL中。
ADD AL,[BX+SI](3)用BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和CX寄存器的内容相加,并把结果送回存储器中。
ADD [BX+0B2H],CX(4)用位移量为0520H的直接寻址方式把存储器中的一个字与数3412H相加,并把结果送回该存储单元中。
ADD WORD PTR [0520H],3412H(5)把数0A0H与AL寄存器的内容相加,并把结果送回AL中。
ADD AL,0A0H2.9;设X、Y、Z、V均为16位带符号数,分别装在X、Y、Z、V存储单元中,阅读如下程序段,得出它的运算公式,并说明运算结果存于何处。
为了避免与操作数地址混淆,将题中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 [si],30h xchg的操作数不能是立即数(2 )pop cs 不能对CS直接赋值(3) sub [si],[di] 两个操作数不能都是存储单元(4)push ah 堆栈的操作数不能是字节量(5) adc ax,ds adc的操作数不能是段寄存器(6) add [si],80h 没有确定是字节还是字操作(7) in al,3fch in不支持超过FFH的直接寻址(8) out dx,ah out只能以AL/AX为源操作数2.11; 给出下列各条指令执行后的结果,以及状态标志CF、OF、SF、ZF、PF的状态。
指令 AX的值 CF OF SF ZF PFMov ax,1407h 1470h - - - - -And ax,ax 1470h 0 0 0 0 0Or ax,ax 1470h 0 0 0 0 0Xor ax,ax 0 0 0 0 1 1Not ax 0ffffh - - - - -Test ax,0f0f0h 0ffffh 0 0 1 0 1注意: 1. mov, not指令不影响标志位2. 其他逻辑指令使CF=OF=0, 根据结果影响其他标志位。
2.12; 假设例题2.32的程序段中,AX = 08H,BX = 10H,请说明每条指令执行后的结果和各个标志位的状态。
注意:1. 左移N次相当于乘于2的N次方,右左移N次相当于除乘于2的N次方。