汇编语言 第二版 答案

合集下载

汇编语言(王爽)_第二版_课后题全_答案23

汇编语言(王爽)_第二版_课后题全_答案23

Program terminated normally
-q
实验4 [bx]和loop的使用
(3)下面的程序功能是将“mov ax,4c00h"之前的指令复制到内存0:200处,补全程序。

上机调试,跟踪运行结果。

assume cs:code
code segment
mov ax, code ;或mov ax, cs
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx, 18h ;或mov cx, 17h ;或sub cx,5
s: mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
此题有多个答案,因为mov用在寄存器之间传送数据的指令是2个字节,用在寄存器和立即数之间是3个字节
答案1:mov ax,cs (占2个字节)
mov cx,17
答案2:mov ax,code (占3个字节)
mov cx,18
答案3:mov ax,cs 或mov ax,code
把mov cx, 改成sub cx,5
(因为在载入程序时,cx保存程序的长度,减去5是为减去mov ax,4c00h和int 21h的长度)
此题的目的是:。

汇编语言(王爽)_第二版_课后题全_答案15

汇编语言(王爽)_第二版_课后题全_答案15

AX=00E6 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=0001 ES=0DB4 SS=0DB4 CS=0DB4 IP=0124 NV UP EI PL NZ AC PE CY0DB4:0124 8A1E0C00 MOV BL,[000C] DS:000C=26-tAX=00E6 BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=0001 ES=0DB4 SS=0DB4 CS=0DB4 IP=0128 NV UP EI PL NZ AC PE CY0DB4:0128 00D8 ADD AL,BL-tAX=000C BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=0001 ES=0DB4 SS=0DB4 CS=0DB4 IP=012A NV UP EI PL NZ NA PE CY0DB4:012A C6061799FF MOV BYTE PTR [9917],FF DS:9917=9A-q检测点3.1(2)内存中的情况如图3.6所示各寄存器的初始值:cs=2000h,ip=0,ds=1000h,ax=0,bx=0;①写出CPU执行的指令序列(用汇编指令写出)。

②写出CPU执行每条指令后,CS、IP和相关寄存器的数值。

③再次体会:数据和程序有区别吗?如何确定内存中的信息哪些是数据,哪些是程序?图3.6内存情况示意检测点3.2(1)补全下面的程序,使其可以将10000H-1000FH中的8个字,逆序拷贝到20000H-2000FH 中。

汇编语言(王爽)_第二版_课后题全_答案25

汇编语言(王爽)_第二版_课后题全_答案25

0000:0203 8ED8 MOV DS,AX0000:0205 B82000 MOV AX,00200000:0208 8EC0 MOV ES,AX0000:020A BB0000 MOV BX,00000000:020D B91800 MOV CX,00180000:0210 8A07 MOV AL,[BX]0000:0212 26 ES:0000:0213 8807 MOV [BX],AL0000:0215 43 INC BX0000:0216 E2F8 LOOP 02100000:0218 0000 ADD [BX+SI],AL0000:021A 0000 ADD [BX+SI],AL0000:021C 0000 ADD [BX+SI],AL0000:021E 0000 ADD [BX+SI],AL-q检测点6.1(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,8s: mov ax,[bx]mov cs:[bx],axadd bx,2loop smov ax,4c00hint 21hcodesg endsend start(2) 下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,数据的传送用栈来进行。

栈空间设置在程序内。

完成程序:assume cs:codesgcodesg segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hdw 0,0,0,0,0,0,0,0,0,0 ;10个字单元用栈空间start:mov ax,csmov ss,axmov sp,36mov ax,0mov ds,axmov bx,0mov cx,8s:push [bx]pop cs:[bx]add bx,2loop smov ax,4c00hint 21hcodesg endsend start实验5 编写、调试具有多个段的程序(1) 将下面的程序编译连接,用Debug加载、跟踪,然后回答问题assume cs:code,ds:data,ss:stackdata segmentdw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hdata endsstack segmentdw 0,0,0,0,0,0,0,0stack endscode segmentstart: mov ax,stackmov ss,axmov sp,16mov ax,datamov ds,axpush ds:[0]push ds:[2]pop ds:[2]pop ds:[0]mov ax,4c00hint 21hcode endsend start① CPU执行程序,程序返回前,data段中的数据为多少?解:不变② CPU执行程序,程序返回前,cs=155ch、ss=155bh、ds=155ah。

汇编语言(第2版),郑晓薇 汇编语言习题-测验题答案

汇编语言(第2版),郑晓薇 汇编语言习题-测验题答案

汇编语言(第2版),郑晓薇汇编语言各章习题、测试题答案习题一1.1 分别将下列二进制数作为无符号数和带符号数转换为十进制和十六进制数11010011 01110111 10000011 00101111 101010101.2 十六进制运算1A52H+4438H 3967H-2D81H 37H×12H 1250H×4H1.3 将十进制数变为8位补码并做运算(结果用二进制、十六进制、十进制表示)29+53 73-24 -66+82 -102-151.4 用压缩BCD码计算(结果用二进制、BCD码、十进制表示)29+53 73-24 66+18 132+751.5 符号位扩展(字节扩展为字,字扩展为双字)20A3H 94H 3456H 7FH EC00H1.6 若机器字长为16位,其无符号数表示范围是多少?带符号数表示范围是多少?分别用十进制和十六进制表示。

1.7 写出下列十六进制数所能代表的数值或编码:(1)38H (2)FFH (3)5AH (4)0DH1.8 将下列十进制数分别转换为二进制、十六进制、二进制补码、压缩BCD码和ASCII码:(1)108 (2)46 (3)-15 (4)2541.9 写出下列算式的8位二进制运算结果,标志位CF、SF、ZF、OF分别是什么值?(1)56+63 (2)83-45 (3)-74+29 (4)-12-371.10 查表,指出ASCII码0DH、0AH、07H、1BH、20H、60H、50H、70H对应的控制字符。

测验一单选题:1.已知X=76,则[X]补= 。

A. 76HB. 4CHC.0B4HD.0CCH2.已知[X]补=80H,则X= 。

A. 80HB. 0C. 0FFHD. -80H3.已知[X]补=98H,则[X]补/2= 。

A. 0CCHB.4CHC. 49HD. 31H4.已知X=78,Y=-83,则[X+Y]补= 。

A. 0F5HB. 0A1HC. 0FBHD. 65H5.将124转换成十六进制数的结果是A. 7CHB. 7DHC. 7EHD. 7BH6.将93H看成一个压缩BCD码,其结果是A. 10010101B. 10010011C.10000011D.100000017.45转换成二进制数是A.10101101B.00111101C. 00101101D. 100111018.6CH转换成十进制数是A. 118B. 108C. 48D. 689.将93H扩展为字的结果是A. FF93HB. 0093HC. 1193HD. 1093H10.56的压缩BCD码是A. 38HB. 56HC. 0506HD. 3536H11.ASCII中的47H表示的字符是A. “7”B. “G”C. “g”D. “E”12.十进制数-128的8位二进制数的补码为A. 11111110B. 01111111C. 10000000D. 1000000113.下列为补码表示,其中真值最大的是A. 10001000B.11111111C.00000000D.0000000114.十六进制数88H,可表示成下面几种形式,请找出错误的表示A. 无符号十进制数136B. 带符号十进制数-120C. 压缩BCD码十进制数88D. 8位二进制数-8的补码15.计算机对字符、符号采用统一的二进制编码。

《汇编语言》第二版习题答案(全)

《汇编语言》第二版习题答案(全)

教材:《汇编语言》检测点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)。

(6)8根数据总线一次可以传送8位二进制数据(即一个字节)。

(7)8086的数据总线宽度为16根(即一次传送的数据为2B)1024B/2B=512,同理1024B/4B=256。

汇编语言程序设计(第二版)课后习题答案

汇编语言程序设计(第二版)课后习题答案

汇编语言程序设计(第二版)课后习题答案第二章1.解答:有256个2.解答:如下图.第一个络子为000B0H字单元,注意,是字单元,第五个格子为000B3H字单元E51E3C2A3.解答:30022H字节单元内容:ABH30024H字节单元内容:EFH30021H字单元内容:AB34H30022H字单元内容: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--A4--B2--C3--D12--E9--F11--G10--H13--I8--J7--K6---L1--M15--N14--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寄存器的内容。

汇编语言(王爽)_第二版_课后题全_答案9

汇编语言(王爽)_第二版_课后题全_答案9

0C1C:0117 00DC ADD AH,BL-tAX=2640 BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0119 NV UP EI PL NZ NA PO NC0C1C:0119 00C7 ADD BH,AL-tAX=2640 BX=4026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=011B NV UP EI PL NZ NA PO NC0C1C:011B B400 MOV AH,00-tAX=0040 BX=4026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=011D NV UP EI PL NZ NA PO NC0C1C:011D 00D8 ADD AL,BL-tAX=0066 BX=4026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=011F NV UP EI PL NZ NA PE NC0C1C:011F 049C ADD AL,9C-tAX=0002 BX=4026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0121 NV UP EI PL NZ AC PO CY0C1C:0121 D3990075 RCR WORD PTR [BX+DI+7500],CL DS:B526=0000-q实验一查看CPU和内存,用机器指令和汇编指令编程(2)将下面的3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。

汇编语言(王爽)_第二版_课后题全_答案3

汇编语言(王爽)_第二版_课后题全_答案3

0C1C:0105 B023 MOV AL,23-tAX=3123 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0107 NV UP EI PL NZ NA PO NC 0C1C:0107 01C0 ADD AX,AX-tAX=6246 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0109 NV UP EI PL NZ NA PO NC 0C1C:0109 BB6C82 MOV BX,826C-tAX=6246 BX=826C CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=010C NV UP EI PL NZ NA PO NC 0C1C:010C 89C1 MOV CX,AX-tAX=6246 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=010E NV UP EI PL NZ NA PO NC 0C1C:010E 89D8 MOV AX,BX-tAX=826C BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0110 NV UP EI PL NZ NA PO NC 0C1C:0110 01D8 ADD AX,BX-tAX=04D8 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0112 OV UP EI PL NZ AC PE CY 0C1C:0112 88F8 MOV AL,BH-tAX=0482 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0114 OV UP EI PL NZ AC PE CY 0C1C:0114 88DC MOV AH,BL-tAX=6C82 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0C1C ES=0C1C SS=0C1C CS=0C1C IP=0116 OV UP EI PL NZ AC PE CY 0C1C:0116 00E4 ADD AH,AH-tAX=D882 BX=826C CX=6246 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000。

微机原理,汇编语言及接口技术第2版课后习题答案

微机原理,汇编语言及接口技术第2版课后习题答案

第1章作业答案1.1 微处理器、微型计算机和微型计算机系统三者之间有什么不同?把CPU(运算器和控制器)用大规模集成电路技术做在一个芯片上,即为微处理器。

微处理器加上一定数量的存储器和外部设备(或外部设备的接口)构成了微型计算机。

微型计算机与管理、维护计算机硬件以及支持应用的软件相结合就形成了微型计算机系统。

1.2 CPU在内部结构上由哪几部分组成?CPU应该具备哪些主要功能?CPU主要由起运算器作用的算术逻辑单元、起控制器作用的指令寄存器、指令译码器、可编程逻辑阵列和标志寄存器等一些寄存器组成。

其主要功能是进行算术和逻辑运算以及控制计算机按照程序的规定自动运行。

1.3微型计算机采用总线结构有什么优点?采用总线结构,扩大了数据传送的灵活性、减少了连线。

而且总线可以标准化,易于兼容和工业化生产。

1.4数据总线和地址总线在结构上有什么不同之处?如果一个系统的数据和地址合用一套总线或者合用部分总线,那么要靠什么来区分地址和数据?数据总线是双向的(数据既可以读也可以写),而地址总线是单向的。

8086CPU为了减少芯片的引脚数量,采用数据与地址线复用,既作数据总线也作为地址总线。

它们主要靠信号的时序来区分。

通常在读写数据时,总是先输出地址(指定要读或写数据的单元),过一段时间再读或写数据。

第2章作业答案2.1 IA-32结构微处理器直至Pentillm4,有哪几种?80386、30486、Pentium、Pentium Pro、PeruiumII、PentiumIII、Pentium4。

2.6IA-32结构微处理器有哪几种操作模式?IA一32结构支持3种操作模式:保护模式、实地址模式和系统管理模式。

操作模式确定哪些指令和结构特性是可以访问的。

2.8IA-32结构微处理器的地址空间如何形成?由段寄存器确定的段基地址与各种寻址方式确定的有效地址相加形成了线性地址。

若末启用分页机制,线性地址即为物理地址;若启用分页机制,则它把线性地址转为物理地址。

汇编语言程序设计(第二版)课后习题答案-精品资料

汇编语言程序设计(第二版)课后习题答案-精品资料

汇编语言程序设计(第二版)课后习题答案第二章1.解答:有256个2.解答:如下图.第一个络子为000B0H字单元,注意,是字单元,第五个格子为000B3H字单元E51E3C2A3.解答:30022H字节单元内容:ABH30024H字节单元内容:EFH30021H字单元内容:AB34H30022H字单元内容: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--A4--B2--C3--D12--E9--F11--G10--H13--I8--J7--K6---L1--M15--N14--O第三章1.(1)立即寻址没有(2)直接寻址7237H(3)使用BX的寄存器寻址没有(4)使用BX的间接寻址637DH(5)使用BX的寄存器相对寻址0D5B4H(6)基址变址寻址8E18H(7)相对基址变址004FH2.根据下列要求,写出相应的汇编指令。

(1)ADD DX,BX(2)ADDAL,[BX][SI](3)ADD[BX][0B2H],CX(4)MOV AX,2A59H ADD[0524H],AX(5)ADDAL,0B5H3.(1)寄存器间接寻址MOVBX,OFFSET[BLOCK][0AH]MOV DX,[BX](2)寄存器相对寻址MOV SI,OAHMOVDX,[BLOCK][SI](3)基址变址寻址MOVBX,BLOCKMOVSI,OAHMOVDX,[BX][SI]4.现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(21200)=2AH,(20201)=4CH,(21202)=B7H,(21203)=65H,试说明下列各条指令执行完后,AX寄存器的内容。

汇编语言程序设计(第二版)课后题答案

汇编语言程序设计(第二版)课后题答案

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,试求出其它每个变量的偏移量。

IBM-PC汇编语言程序设计答案(第2版)

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。

IBM-PC汇编语言程序设计课后习题答案(第二版 沈美明))

IBM-PC汇编语言程序设计课后习题答案(第二版 沈美明))

第五章5、1 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。

答:程序段如下:BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用INT 21HCMP AL, ‘a’ ;输入字符<‘a’不?JB STOPCMP AL, ‘z’ ;输入字符>‘z’不?JA STOPSUB AL, 20H ;转换为大写字母,用AND AL, 1101 1111B也可MOV DL, AL ;显示一个字符的DOS调用MOV AH, 2INT 21HJMP BEGINSTOP: RET5、2 编写程序,从键盘接收一个小写字母,然后找出它的前导字符与后续字符,再按顺序显示这三个字符。

答:程序段如下:BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用INT 21HCMP AL, ‘a’ ;输入字符<‘a’不?JB STOPCMP AL, ‘z’ ;输入字符>‘z’不?DEC AL ;得到前导字符MOV DL, AL ;准备显示三个字符MOV CX, 3DISPLAY: MOV AH, 2 ;显示一个字符的DOS调用INT 21HINC DLLOOP DISPLAYSTOP: RET5、3 将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别放在AL、BL、CL与DL中。

答:程序段如下:DSEG SEGMENTSTORE DB 4 DUP (?)DSEG ENDS┇BEGIN: MOV CL, 4 ;右移四次MOV CH, 4 ;循环四次LEA BX, STOREA10: MOV DX, AXAND DX, 0FH ;取AX的低四位MOV [BX], DL ;低四位存入STORE中INC BXSHR AX, CL ;右移四次JNZ A10 ;循环四次完了码?B10: MOV DL, STORE ;四组数分别放在AL、BL、CL与DL中MOV CL, STORE+1MOV BL, STORE+2MOV AL, STORE+3STOP: RET5、4 试编写一程序,要求比较两个字符串STRING1与STRING2所含字符就是否完全相同,若相同则显示‘MATCH’, 若不相同则显示‘NO MATCH’。

汇编语言程序设计教程(第二版)习题参考答案

汇编语言程序设计教程(第二版)习题参考答案

汇编语言程序设计教程(第二版)习题参考答案第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码的运算。

ibm-pc汇编语言程序设计课后习题答案(第二版沈美明))

ibm-pc汇编语言程序设计课后习题答案(第二版沈美明))

第五章试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。

答:程序段如下:BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用INT 21HCMP AL, ‘a’ ;输入字符<‘a’吗JB STOPCMP AL, ‘z’ ;输入字符>‘z’吗JA STOPSUB AL, 20H ;转换为大写字母,用AND AL, 1101 1111B也可MOV DL, AL ;显示一个字符的DOS调用MOV AH, 2INT 21HJMP BEGINSTOP: RET编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。

答:程序段如下:BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用INT 21HCMP AL, ‘a’ ;输入字符<‘a’吗JB STOPCMP AL, ‘z’ ;输入字符>‘z’吗JA STOPDEC AL ;得到前导字符MOV DL, AL ;准备显示三个字符MOV CX, 3DISPLAY: MOV AH, 2 ;显示一个字符的DOS调用INT 21HINC DLLOOP DISPLAYSTOP: RET将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别放在AL、BL、CL和DL中。

答:程序段如下:DSEG SEGMENTSTORE DB 4 DUP ()DSEG ENDS┇BEGIN: MOV CL, 4 ;右移四次MOV CH, 4 ;循环四次LEA BX, STOREA10: MOV DX, AXAND DX, 0FH ;取AX的低四位MOV [BX], DL ;低四位存入STORE中INC BXSHR AX, CL ;右移四次DEC CHJNZ A10 ;循环四次完了码B10: MOV DL, STORE ;四组数分别放在AL、BL、CL和DL中MOV CL, STORE+1MOV BL, STORE+2MOV AL, STORE+3STOP: RET试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示‘MATCH’,若不相同则显示‘NO MATCH’。

IBMPC汇编语言程序设计课后习题答案(第二版沈美明)

IBMPC汇编语言程序设计课后习题答案(第二版沈美明)

(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=7FFFH将以下二进制数转换为十六进制数和十进制数:(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=255将以下十六进制数转换为二进制数和十进制数:(1) FA (2) 5B (3) FFFE (4) 1234答:(1) FAH=1111 1010B=250(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=7FFFH将以下二进制数转换为十六进制数和十进制数:(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=255将以下十六进制数转换为二进制数和十进制数:(1) FA (2) 5B (3) FFFE (4) 1234答:(1) FAH=1111 1010B=250(3) FFFEH=1111 1111 1111 1110B=65534(4) 1234H=1 0010 0011 0100B=4660完成以下十六进制数的运算,并转换为十进制数进行校核:(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=217893以下各数均为十进制数,请用8位二进制补码计算以下各题,并用十六进制数表示其运算结果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
end
(3) 下面的程序的功能是将“mov ax,4c00h”之前的指令复制到内存0:200处,补全程序。上机调试,跟踪运行结果。
assume cs:code
code segment
mov ax,code ;code为所填写的数据
mov ds,ax
mov ax,0020h
mov es,ax
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
dw 0,0,0,0,0
start:
mov ax,cs ;cs为所填第一空
mov ss,ax
mov sp,1ah ;此条指令为所填第二空
mov ax,0
mov ds,ax
第十四空:6246H
(2)只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。
解答如下:
mov ax,2
add ax,ax
add ax,ax
add ax,ax
检测点2.2(第23页)
----------------------
(1)00010H,1000FH
(2)1001H,2000H
mov
实验2 用机器指令和汇编指令编程(第70页)
---------------------------------------
1.预备知识:Debug的使用
<此部分略>
2.实验任务
(1)使用Debug,将下面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。
从第一空开始依次如下:
add bx,2
loop s1
mov ax,b
mov es,ax
mov ds,ax
mov bx,0
mov cx,8
s2:mov ax,es:[bx]
add [bx],ax
mov bx,0
mov cx,8
s:
push [bx]
pop cs:[bx] ;此条指令为所填第三空
add bx,2
loop s
mov ax,4c00h
int 21h
codesg ends
end start
实验5 编写、调试具有多个段的程序(第123页)
mov bx,0
mov cx,18h ;18h为所填写的数据
s: mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
提示:
1.因为题目的要求是把代码段内的指令当作数据,复制到目的地址。所以,源数据段ds和代码段cs相同,通过 mov ax,code/mov ds,ax ('/'符号是指两条指令的分隔)来设置源数据段。
c ends
code segment
start:mov ax,a
mov es,ax
mov ax,c
mov ds,ax
mov bx,0
mov cx,8
s1:mov ax,es:[bx]
add [bx],ax
(2)仔细观察图3.19的实验过程,然后分析:为什么2000:0~2000:f中的内容会发生改变?
答:因为用T指令进行调试时,会产生中断。而为了保护现场,CPU则先将标志寄存器进栈、再把当前CS的值进栈,最后将IP的值进栈。<关于中断的详细内容的讨论不在此题范围>
实验4 [BX]和loop的使用(第113页)
(5)完整程序如下:
assume cs:code
a segment
db 1,2,3,4,5,6,7,8
a ends
b segment
db 1,2,3,4,5,6,7,8
b ends
c segment
db 0,0,0,0,0,0,0,0
datasg segment
第十二空:000CH
提示:此题可在DEBUG中利用E命令在本机上按照题目中所给出的内存单元及其数据进行相应地修改,然后再用A命令进行写入(题目中所给出的)相应的汇编指令,最后再进行T命令进行逐步执行,以查看相应结果。
(2)
1.指令序列如下:
mov ax,6622h
jmp 0ff0:0100
(3)
1.保持不变
2.<考虑不同机子环境不同,答案无法统一>
3.X+3,X+4
(4)
答:第3个仍然可以正确执行。因为如果把end指令后的标号start去掉后,编译器便会顺序执行程序。换句话说:当未给编译器预先的通知,要求其从哪开始执行程序时,编译器就自动以'至上向下'的顺序进行编译执行源程序。
mov bx,0
mov cx,8
s: push [bx]
add bx,2
loop s
mov ax,4c00h
int 21h
code ends
end start
实验6 实践课程中的程序(第147页)
-------------------------------
(2)编程:完成问题中的程序。
问题7.9完整程序如下:
assume cs:codesg,ss:stacksg,ds:datasg
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
add bx,2
loop s2
mov ax,4c00h
int 21h
code ends
end start
(6)完整程序如下:
assume cs:code
a segment
dw 1,2,3,4,5,6,7,8
检测点1.1(第8页)
----------------------
(1) 13
(2) 1024,0,1023
(3) 8192,1024
(4) 2^30,2^20,2^10
(5) 64,1,16,4
(6) 1,1,2,2,4
(7) 512,256
(8) 二进制
注意:
1.第4题中的符号'^'指求幂运算(如: 2^30指2的30次方)
-----------------------------------------
(1)
1.保持不变
2.<考虑不同机子环境不同,答案无法统一>
3.X-2,X-1
(2)
1.保持不变
2.<考虑不同机子环境不同,答案无法统一>
3.X-2,X-1
4.(N/16+1)*16 [说明:N/16只取整数部分]
2.可以先假设要复制8位[1h~0ffh]数据(因为我们肉眼就可以看出此程序的长度不可能大于0ffh个字节)的字节数(如:10h),把程序补全,以便通过编译。这时我们以准确的第一空所填内容code与假想的第二空内容10h将程序补充完整并将其编译、连接、运行,接着进行DEBUG,在DEBUG时我们可用R命令查看CX的值,这时我们可以看到CX的值为1D,由此我们可以算出该程序的长度[1Dh-5h]=18h,之所以减5是为了满足题目的要求(因为mov ax,4c00h/int 21h这两条指令的长度等于5)
程序如下:
assume cs:codesg
codesg segment
mov ax,0020h
mov ds,ax
mov bl,0
mov cx,40h
s: mov [bx],bl
inc bl
loop s
mov ax,4c00h
int 21h
codesg ends
ax=5BEA
ax=5CCA
bx=30F0
bx=6029
sp=FE 220FE 5CCA
sp=FC 220FC 6029
sp=FE 6029
sp=100H 5CCA
sp=FE 220FE 30F0
sp=FC 220FC 2E39
说明:此题可能因机子软、硬件环境不同而导致答案不一致!
mov cx,8
s: mov ax,[bx]
mov cs:[bx],ax ;此条指令为所填指令
add bx,2
loop s
mov ax,4c00h
int 21h
codesg ends cs:codesg
codesg segment
a ends
b segment
dw 0,0,0,0,0,0,0,0
b ends
code segment
start:
mov ax,b
mov ss,ax
mov sp,10h
mov ax,a
mov ds,ax
(1)写出每条汇编指令执行后相关寄存器中的值。
第一空:F4A3H
第二空:31A3H
第三空:3123H
第四空:6246H
第五空:826CH
第六空:6246H
第七空:826CH
第八空:04D8H
第九空:0482H
第十空:6C82H
第十一空:D882H
第十二空:D888H
第十三空:D810H
<此部分略>
(2)
<此部分略>
相关文档
最新文档