当前位置:文档之家› 汇编试题答案

汇编试题答案

汇编试题答案
汇编试题答案

汇编语言程序设计答案

一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在题干后的括号内,每小题2分,共40分)

1.十六进制数88H,可表示成下面几种形式,请找出错误的表示(②)。

①无符号十进制数136

②带符号十进制数-120

③压缩型BCD码十进制数88

④ 8位二进制数-8的补码表示

2.某存储单元的物理地址是12345H,可以作为它的段地址有( ④)

①2345H ②12345H

③12340H ④1234H

3.完成将累加器AL清零,并使进位标志CF清零,下面错误的指令是(①)。

① MOV AL,00H

② AND AL,00H

③ XOR AL,AL

④ SUB AL,AL

4.在汇编语言程序中,对END语句的叙述正确的是(②)。

① END语句是一可执行语句

② END语句表示程序执行到此结束

③ END语句表示源程序到此结束

④ END语句在汇编后要产生机器码

5.下面的数据传送指令中,错误的操作是(④)。

① MOV SS:[BX+DI],1000H

② MOV DX,1000H

③ MOV WORD PTR[BX],1000H

④ MOV DS,2000H

6.下面指令执行后,变量DAB中的内容是(③)。

DAW DW 2A05H

DAB DB 0FAH

MOV AL,BYTE PRT DAW

SUB DAB,AL

① 0DAH

② 0FAH

③ 0F5H

④ 0D0H

7.执行下列指令后,正确的结果是(②)。

MOV AL,100

MOV BL,-2

① AL=100H

BL=02H

② AL=64H

BL=0FEH

③ AL=64H

BL=82H

④ AL=100H

BL=0FEH

8.当一个带符号数大于0FBH时程序转移,需选用的条件转移指令是(③)。

① JLE

② JNL

③ JNLE

④ JL

9.测试BL寄存器内容是否与数据4FH相等,若相等则转NEXT处执行,可实现的方法是(②)。

① TEST BL,4FH

JZ NEXT

② XOR BL,4FH

JZ NEXT

③ AND BL,4FH

JZ NEXT

④ OR BL,4FH

JZ NEXT

10.在执行下列指令时,需要使用段寄存器DS的指令是( ①)

① STOSW ② ADD AL,CL

③NEG BX ④INC DA[BX]

11.设AL=0AH,下列指令执行后能使AL=05H的是( ③)

①NOT AL ②AND AL,0FH

③XOR AL,0FH ④OR AL,0FH

12.在下列串操作指令中,同时使用源串和目的串地址指针的指令是( ④)

①STOSW ②LODSW

③SCASW ④CMPSW

13.设SP初值为2000H,执行指令“PUSH AX”后,SP的值是(④)

①1FFFH ②1998H

③2002H ④1FFEH

14.汇编语言源程序中,每个语句可由四项组成,其中名字项是一个符号,下面列

出的有效名字是(②)

①Variable ②First & ld

③0FFFFH ④‘Memphis’

15. ORG 0030H

DA1 DB 0,‘0’,30H

DW DA1

数据为3000H字存储单元的偏移地址是(①)

①0030H ②0031H ③0032H ④0033H

16.要求将A,B两个字符的ASCⅡ码41H,42H顺序存放在连续两个字存储单元中,

可选用的语句是(①)

①DA1 DB ‘AB’②DA1 DW ‘AB’

③DA1 DB 0ABH ④DA1 DW 0ABH

17.为在一连续的存储单元中,依次存放数据 41H , 42H , 43H , 44H , 45H ,

46H ,可选用的数据定义语句是(④)

① DB 41 , 42 , 43 , 44 , 45 , 46

② DW 4142H , 4344H , 4546H

③DW ‘AB’,‘CD’,‘EF’

④DW ‘BA’,‘DC’,‘FE’

18如某存储器分段时,表示偏移地址是 18 位二进制代码,那么一个段最多的存储单元数是(③)

① 32K 字节② 32K 字

③ 64K 字节④ 64K 字

19 .把 BL 中的数据输出到端口 8CH 中正确指令是(③)

① OUT 8CH , BL ② IN 8CH , BL

③ MOV AL , BL ④ MOV AL , BL

OUT 8CH , AL IN 8CH , AL

20 .设 SP 初值为 3050H ,执行指令 PUSH BX 后, SP 的值是(①)

① 304FH ② 304EH

③ 3048H ④ 3049H

二、简答题(按要求完成下列各题,共35分)

21.已知堆栈寄存器SS的内容是0F0A0H,堆栈指示器SP的内容是00BOH,先执行两条把8057H和0F79BH分别入栈的PUSH指令,然后执行一条POP指令,试画出示意图说明堆栈及SP内容的变化过程。(4分)

答:F0A0H:00B0H→F0A0H:00AEH→F0A0H:00ACH→F0A0H:00AEH(每个一分)

22.写出分配给中断类型号在4AH在中断向量表中的物理地址以及相应的中断服务程序的入口地址。已知

0:4AH=0F0H,0:4BH=88H,0:4CH=90H,0:4DH=10H,0:128H=06H,0:129H=18H,0:12A=00H,0:12B =0F0H (4分)

物理地址:1280H,中断服务程序的入口地址:F000H:1806H

23.设置中断向量,中断类型号为N,其中中断服务程序入口地址为FFF0:1230H,写出指令序列实现该功能(6分)

mov ah,25h

Mov al,N (2分)

Mov dx,1230H

Mov bx,FFF0h(4分)

Mov ds,bx

Int 21H

24.下面的程序段有错吗若有,请指出错误并改正(15分)

改正错误的每个1分,指出错误的1分

CARY PROC

PUSH AX

PUSH BX

ADD [AX],[BX] ;ADD AX,[BX]

MUL 5 ;MUL AX

MOV AH,BX ;MOV AH,BL

MOV CS,AX ;MOV DS,AX

MOV BX,OFFSET MYDAT[SI];MOV BX,OFFSET MYDAT

POP AX ;POP BX

POP BX ;POP AX

25.已知(IP)=2BC0H,(CS)=0200H,位移量

D=5119H,(BX)=1200H,(DS)=212AH,(224A0H)=0600H,(275B9H)=098AH,

试为以下的转移指令找出转移的偏移地址。(1)段内直接寻址(2)使用BX及寄存器间接寻址方式的段内间接寻址(3)使用BX及寄存器相对寻址方式的段内间接寻址(6分)1:5119H 2: 098AH 3:0060H

26.在下列程序的括号中分别填入如下指令(1)LOOP L20 (2)LOOPE L20 (3)LOOPNE L20

试说明在三种情况下,当程序执行完后,AX,BX,CX,DX四个寄存器的内容分别是什么(12分)

CODE SEGMENT

ASSUME CS:CODE,DS:CODE,SS:CODE

ORG 100H

BEGIN:MOV AX,01

MOV BX,02

MOV DX,03

MOV CX,04

L20:

INC AX

ADD BX,AX

SHR DX,1

()

RET

CODE ENDS

END BEGIN

AX=5,BX=10,CX=0,DX=0

AX=2,BX=4,CX=3,DX=1

AX=3,BX=7,CX=2,DX=0

27.编写程序实现对数组ARRY[5]={6,1,7,9,0}按从小到大的顺序排序(13分)mov ah,25h

Mov al,N (5分)

Mov dx,1230H

Mov bx,FFF0h(5分) Mov ds,bx Int 21H

汇编语言第二章答案

2.1 在80x86微机的输入/输出指令中,I/O端口号通常是由DX寄存器提供的,但有时也可以在指令中直接指定00~FFH的端口号。试问可直接由指令指定的I/O端口数。 答:可直接由指令指定的I/O端口数为256个。 2.2 有两个16位字1EE5H和2A3CH分别存放在80x86微机的存储器的000B0H和000B3H单元中,请用图表示出它们在存储器里的存放情况。 答:存储器里的存放情况如右下图所示: 000B0H E5H 000B1H 1EH 000B2H 000B3H 3CH 000B4H 2AH 2.3在IBM PC机的存储器中存放信息如右下图所示。试读出30022H和30024H字节单元的内容,以及30021H和30022H字单元的内容。 30020H 12H 30021H 34H 30022H ABH 30023H CDH 30024H EFH 答:30022H字节单元的内容为ABH;30024H字节单元的内容为EFH。30021H字单元的内容为AB34H;30022H字单元的内容为CDABH。 2.4 在实模式下,段地址和偏移地址为3017:000A的存储单元的物理地址是什么?如果段地址和偏移地址是3015:002A和3010:007A呢? 答:3017:000A、3015:002A和3010:007A的存储单元的物理地址都是3017AH。 2.5 如果在一个程序开始执行以前(CS)=0A7F0H,(如16进制数的最高位为字母,则应在其前加一个0) (IP)=2B40H,试问该程序的第一个字的物理地址是多少? 答:该程序的第一个字的物理地址是0AAA40H。 2.6在实模式下,存储器中每一段最多可有10000H个字节。如果用调试程序DEBUG的r命令在终端上显示出当前各寄存器的内容如下,请画出此时存储器分段的示意图,以及条件标志OF、SF、ZF、CF的值。 C>debug -r AX=0000 BX=0000 CX=0079 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=10E4 ES=10F4 SS=21F0 CS=31FF IP=0100 NV UP DI PL NZ NA PO NC 答:此时存储器分段的示意图如右图所示。OF、SF、ZF、CF的值都为0。 2.7 下列操作可使用那些寄存器?

汇编语言基础练习题目

、填空 1. 在8086/8088的计算机中,存储单元的20位物理地址由两部分组成,即16 位的 段地址 和16位的 偏移地址,物理地址=段地址X 10H+偏移量。 2. 段的起始地址必须是某小段的首地址,它能被 10H 整除。 3. 已知01020H 字单元的内容为6A58H 请分别写出它的两个字节单元的地址和 内容: (01020H =58H, ( 01021H =6AH 4. 指令执行后,若标志寄存器的ZF=0,则表示结果不为0;若SF=0,则表示结 果的符号是正号,即结果为正数。 5. 控制器从存储器取出一条指令后,指令指针寄存器IP 的内容是 将要执行的下 一条指令开始的偏移地址。 6. 段地址和偏移地址为1000: 127B 的存储单元的物理地址是1127BH 解:由物理地址=段地址X 10H+偏移量的公式可得 物理地址=1000HX 10H+127BH=10000H+127BH=1127BH 、选择 1. 与CS 寄存器组合才能形成代码段的物理地址的寄存器是 解:16K 个字单元,即为32K 个字节单元。由于2的15次方为32K,因此至 少需要15位二进制数才能表示16K 个字单元。 3. 已知一数据段的段地址是0100H,这个段的第6个字单元的物理地址是(B ) o 解:由于一个字单元占用两个字节,第一个字单元的偏移地址为 0000H,因 此第一个字单元的物理地址为 01000H 。以后每一个字单元的地址在前一个的基 C )。 A. SP 寄存器 B. BP 寄存器 C. IP 寄存器 D. BX 寄存器 2.如果存储器分段时, 的二进制数至少是( 一个段最多允许16K 个字单元,那么表示该段内偏移地址 A )o A.15 位 位 B.16 位 C.17 位 D.18 A. 01010H B. 0100AH C.01012H D.01006H

汇编语言王爽第二版课后答案

第一章基础知识 检测点(第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次方) 第二章寄存器(CPU工作原理) 检测点(第18页) ---------------------- (1)写出每条汇编指令执行后相关寄存器中的值。第一空:F4A3H 第二空:31A3H 第三空:3123H 第四空:6246H 第五空:826CH 第六空:6246H 第七空:826CH 第八空:04D8H 第九空:0482H 第十空:6C82H 第十一空:D882H 第十二空:D888H 第十三空:D810H 第十四空:6246H (2)只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。 解答如下: mov ax,2 add ax,ax add ax,ax add ax,ax 检测点(第23页) ---------------------- (1)00010H,1000FH (2)1001H,2000H 第2题说明: 因为段的起始地址要为16的倍数。所以当段地址小于1001H或大于2000H时CPU都无法寻到。 检测点(第33页) ----------------------答:CPU修改了4次IP的值。 情况如下: 第1次:执行完mov ax,bx后 第2次:执行完sub ax,ax后 第3次:读入jmp ax后 第4次:执行完jmp ax后 最后IP的值为0 实验1 查看CPU和内存,用机器指令和汇编指令编程(第33页) ----------------------------------------------------- 1.预备知识:Debug的使用 <此部分略> 2.实验任务(第43页) (1) <此部分略> (2) <此部分略> (3) 通过DEBUG中的D命令查看到主板的生产日期[以月、日、年,分隔符为'/'的格式]存储在内存ffff:0005~ffff:000C(共8个字节单元中)处。此生产日期不能被改变,因为其具有‘只读’属性。 (4) 通过向内存中的显存写入数据,使计算机根据写入的数据进行ASCII转换,并将转换后且可打印的字符输出到屏幕上。<注:关于显存的详细讨论不在此题范围> 第三章寄存器(内存访问) 检测点(第52页) ---------------------- (1)(题目:略) 第一空:2662H 第二空:E626H 第三空:E626H 第四空:2662H 第五空:D6E6H 第六空:FD48H 第七空:2C14H 第八空:0000H 第九空:00E6H 第十空:0000H 第十一空:0026H 第十二空:000CH 提示:此题可在DEBUG中利用E命令在本机上按照题目中所给出的内存单元及其数据进行相应地修改,然后再用A命令进行写入(题目中所给出的)相应的汇编指令,最后再进行T命令进行逐步执行,以查看相应结果。

汇编语言 第二版 王爽 完整答案

第1章基础知识 检测点1.1 (1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为13。 (2)1KB的存储器有1024个存储单元。存储单元的编号从0到1023。 (3)1KB的存储器可以存储1024*8个bit,1024个Byte。 (4)1GB、1MB、1KB分别是2^30、2^20、2^10 Byte。(n^m的意思是n的m次幂) (5)8080、8088、80286、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)在存储器中,数据和程序以二进制形式存放。 第2章寄存器答案 检测点2.1 (1) 写出每条汇编指令执行后相关寄存器中的值。 mov ax,62627 AX=F4A3H mov ah,31H AX=31A3H mov al,23H AX=3123H add ax,ax AX=6246H mov bx,826CH BX=826CH mov cx,ax CX=6246H mov ax,bx AX=826CH add ax,bx AX=04D8H mov al,bh AX=0482H mov ah,bl AX=6C82H add ah,ah AX=D882H add al,6 AX=D888H add al,al AX=D810H mov ax,cx AX=6246H (2) 只能使用目前学过的汇编指令,最多使用4条指令,编程计算2的4次方。 解: mov ax,2 add ax,ax add ax,ax add ax,ax 检测点2.2 (1) 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为00010H到1000FH。 (2) 有一数据存放在内存 20000H 单元中,先给定段地址为SA,若想用偏移地址寻到此单元。

第二章习题解答汇编

第二章 2-3 设系统传递函数为 3 42 )(2 ++= s s s G 初始条件0/)0(,1)0(=-=dt dc c 。求单位阶跃输入r (t)=1(t)时,系统的输出响应c (t)。 【解】系统传递函数与微分方程是一一对应的,故通过传递函数先求出微分方程,然后通过拉氏变换的方法求解微分方程。 系统对应的微分方程为 4()3()2()c c t c t r t ++= 在给定的非零初始条件下,进行拉氏变换 22(43)()(0)(0)4(0)s s C s sc c c s ++---= 整理后 2221 ()(43)(43) s C s s s s s s += -++++ 部分分式展开后,拉氏反变换 11122 3242/35/25/6()[()][][](43)(43)13 255326 t t s c t L C s L L s s s s s s s s e e -----+==-=-+++++++= -+ 2-4 在图2-48中,已知G (s) 和H (s)两方框对应的微分方程分别为 ()2()5()4()3()6() c t c t e t b t b t c t +=+= 图2-48 习题2-4系统结构框图 且初始条件为零,试求传递函数C (s)/R (s)。 【解】求出每个方框的传递函数,利用反馈等效的方法求C(s)/R(s)。 根据定义可得 5()2G s s = +,6()43 H s s =+ 25 5 ()5()25(43)10075(2) 56()1()()(2)(43)3041136 1(2)(43) C s G s s s s R s G s H s s s s s s s +++====+++++++++ 2-5 图2-49是由电阻、电容和运算法放大器组成的无源网络和有源网络,试列写以V in (t)

汇编语言课后习题答案---郑晓薇(整理后的)

习题一 1 无符号数: 11010011=211=D3H,01110111=119=77H, 10000011=131=83H, 00101111=47=2FH, 10101010=170=AAH 带符号数:11010011= -45=D3H,01110111=+119=77H,10000011= -125=83H, 00101111=+47=2FH,10101010= -86=AAH 2 5E8AH,0BE6H,3DEH,4940H 3 00011101+00110101=01010010=5 2H=82 01001001+11101000=00110001=3 1H=49 10111110+01010010=00010000=1 0H=16 10011010+11110001=10001011=8 BH= -117 4 00101001+01010011=01111100+0 0000110=10000010=82H=82 01110011-00100100=01001111-00000110=01001001=49H=49 01100110+00011000=01111110+0 0000110=10000100=84H=84 10010+01110101=00111+0000011 0 =00111=0207H=207 5 000020A3H,FF94H,00003456H,007FH,FFFFEC00H 6 无符号数:0~65535,0000H~FFFFH;带符号数:-32768~+32767,8000H~7FFFH 7 (1) 38H等于十进制数56,是十进制数56的补码,数字8的ASCII码,十进制数38的压缩BCD码 (2) FFH等于十进制数-1,是带符号数-1的补码,无符号数为255 (3) 5AH等于十进制数90,是十进制数90的补码,大写字母Z的ASCII码 (4) 0DH等于十进制数13,是十进制数13的补码,回车符的ASCII码 8 (1) 108=01101100B=6CH,补码01101100B,压缩BCD码01000,ASCII 码313038H (2) 46=00101110B=2EH,补码00101110B,压缩BCD码01000110,ASCII码3436H (3) –15=11110001B=F1H,补码11110001B,ASCII码2D3135H (4) 254=11110B=00FEH,补码11110B,压缩BCD码10100,ASCII 码323534H 9 (1) 56+63=01110111B,CF=0,SF=0,ZF=0,OF=0 (2) 83-45=00100110B,CF=0,SF=0,ZF=0,OF=0 (3) -74+29=11010011B,CF=0, SF=1,ZF=0,OF=0 (4) -92-37=01111111B,CF=1, SF=0,ZF=0,OF=1 10 回车、换行、响铃、ESC键、空格键、、P、p 习题二 9 最少划分为16个逻辑段,最多划分为65536个逻辑段(每段16个字节) 10 CS:IP,DS:BX、SI、DI,ES:BX、SI、DI,SS:SP、BP 11 字节单元保存8位数,字单元保存16位数。根据源操作数的属性确定要访问的是字节单元还是字单元。 12 对于字节单元来说,偶地址和奇地址一样;对于字单元而言,最好用偶地址保存,可减少CPU的访存次数。 13 首单元的物理地址=38AE8H,末单元的物理地址 =38AE8H+7FFFH=40AE7H 16 (1)物理地址=27679H (2) 物理地址=20F92H (3) 物理地址=20F92H (2)和(3)的物理地址是一样的。说明逻辑地

汇编语言程序设计实验教程第二章实验报告

汇编语言程序设计实验教程第二章 实验报告

实验2.1 用表格形式显示字符 1.题目:用表格形式显示ASCII字符SMASCII 2.实验要求: 按15行*16列的表格形式显示ASCII码为10H-100H的所有字符,即以行为主的顺序及ASCII码递增的次序依次显示对应的字符。每16个字符为一行,每行中的相邻两个字符之间用空白符(ASCII为0)隔开。 3.提示: (1)显示每个字符可使用功能号为02的显示输出功能调用,使用方法如下:mov ah,02h mov dl,输出字符的ASCII码 int 21h (2)显示空白符时,用其ASCII码0置入dl寄存器。每行结束时,用显示回车(ASCII 为0dh)和换行符(ASCII为0ah)来结束本行并开始下一行。 (3)由于逐个显示相继的ASCII字符时,需要保存并不断修改dl寄存器的内容,而显示空白、回车、换行符时也需要使用dl寄存器,为此可使用堆栈来保存相继的ASCII字符。具体做法是:在显示空白或回车、换行符前用指令 push dx 把dl的内容保存到堆栈中去。在显示空白或回车、换行符后用指令 pop dx 恢复dl寄存器的原始内容。 4.程序清单: code segment assume cs:code start: mov dx,0010h next: mov cx,10h loop1: mov ah,02h int 21h inc dx push dx

int 21h pop dx loop loop1 push dx mov dl,0ah int 21h mov dl,0dh int 21h pop dx cmp dx,100h jb next mov ah,4ch int 21h code ends end start 5.运行结果如下: 6.实验总结: 通过本次实验我深刻的知道用汇编语言编译程序的方法,掌握了如何合理的利用各个寄存器进行程序的控制操作,初步了解到循环程序的控制方法,以及dos中断调用的基本要领对学习汇编语言有了非常好的帮助作用! 汇编语言实验二查找匹配字符串 一、目的 查找匹配字符串SEARCH

汇编语言程序设计(钱晓捷)课后答案

汇编语言程序设计(第二版) 钱晓捷习题答案 第二章(01) 2.1 (1)AX=1200h (2)AX=0100h (3)AX=4C2Ah (4)AX=3412h (5)AX=4C2Ah (6)AX=7856h (7)AX=65B7h 2.2(1) 两操作数类型不匹配 (2) IP指令指针禁止用户访问 (3) 立即数不允许传给段寄存器 (4) 段寄存器之间不允许传送 (5) 两操作数类型不匹配 (6) 目的操作数应为[ BP ] (7) 源操作数应为[BX+DI] (8) 立即数不能作目的操作数 2.3 lea bx,table ;获取table的首地址,BX=200H mov al,8 ;传送欲转换的数字,AL=8 xlat ;转换为格雷码,AL=12H 2.4 堆栈是一种按“先进后出”原则存取数据的存储区域。 堆栈的两种基本操作是压栈和出栈,对应的指令是PUSH和POP。 2.5 mov ax,8057h push ax mov ax,0f79h push ax pop bx ;bx=0f79h pop [bx] ;DS:[0f79h]=8057h 2.6 AL=89h CF ZF SF OF PF AL=12h 1 0 0 1 1 AL=0afh 0 0 1 0 1 AL=0afh 1 0 1 0 1 AL=00h 0 1 0 0 1 AL=0ffh 0 0 1 0 1 AL=00h 0 1 0 0 1 2.7 W=X+Y+24-Z

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,0A0H 2.9;为了避免与操作数地址混淆,将题中X,Y,Z,V 字操作数改为A,B,C,D mov ax,X ;ax=A imul Y ;dx,ax = A*B (将操作数看作符号数,以下同) mov cx,ax mov bx,dx ;bx,ax <-- dx,ax =A*B mov ax,Z ;ax = C cwd ;dx,ax =C (扩展符号后为双字) add cx,ax adc bx,dx ;bx,cx <-- bx,cx+dx,ax=A*B+C sub cx,540 sbb bx,0 ;bx,cx<-- A*B+C-540 mov ax, V ;ax= D cwd ;dx,ax= D (扩展符号后为双字) sub ax, cx sbb 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,1407h1470h----- And ax,ax1470h00000 Or ax,ax1470h00000 Xor ax,ax000011 Not ax0ffffh----- Test ax,0f0f0h0ffffh00101 注意: 1. mov, not指令不影响标志位 2. 其他逻辑指令使CF=OF=0, 根据结果影响其他标志位。

汇编语言程序设计(第四版)第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)的连续区域中。请为如下程序段的每条指令加上注释,说明每条指令的功能和执行结果。 lea bx,table mov al,8 xlat 〔解答〕 lea bx,table ;获取table的首地址,BX=200H mov al,8 ;传送欲转换的数字,AL=8 xlat ;转换为格雷码,AL=12H P35 〔习题2.4〕什么是堆栈,它的工作原则是什么,它的基本操作有哪两个,对应哪两种指令? 〔解答〕 堆栈是一种按“先进后出”原则存取数据的存储区域,位于堆栈段中,使用SS段寄存器记录其段地址;它的工作原则是先进后出;堆栈的两种基本操作是压栈和出栈,对应的指令是PUSH和POP。 〔习题2.5〕已知SS = 2200H、SP = 00B0H,画图说明执行下面指令序列时,堆栈区和SP的内容如何变化? mov ax,8057h push ax mov ax,0f79h push ax

王爽《汇编语言》第1章DOC版

第1章基础知识 汇编语言是直接在硬件之上工作的编程语言,首先要了解硬件系统的结构,才能有效地应用汇编语言对其编程。在本章中,对硬件系统结构的问题进行一部分的探讨,以使后续的课程可在一个好的基础上进行。当课程进行到需要补充新的基础知识(关于编程结构或其他的)时候,再对相关的基础知识进行介绍和探讨。本书的原则是,以后用到的知识,以后再说。 在汇编课程中不对硬件系统进行全面和深入的研究,因为这不在本课程的范围之内。关于PC机及CPU物理结构和编程结构的全面研究,在《微机原理与接口》中进行;对于计算机一般的结构、功能、性能的研究在一门称为《组成原理》的理论层次更高的课程中进行。汇编课程的研究重点放在如何利用硬件系统的编程结构和指令集有效灵活地控制系统进行工作。 1.1 机器语言 说到汇编语言的产生,首先要讲一下机器语言。机器语言是机器指令的集合。机器指令展开来讲就是一台机器可以正确执行的命令。电子计算机的机器指令是一列二进制数字。计算机将之转变为一列高低电平,以使计算机的电子器件受到驱动,进行运算。 上面所说的计算机指的是可以执行机器指令,进行运算的机器。这是早期计算机的概念。现在,在常用的PC机中,有一个芯片来完成上面所说的计算机的功能。这个芯片就是我们常说的CPU(Central Processing Unit,中央处理单元),CPU是一种微处理器。以后我们提到的计算机是指由CPU和其他受CPU直接或间接控制的芯片、器件、设备组成的计算机系统,比如我们最常见的PC机。 每一种微处理器,由于硬件设计和内部结构的不同,就需要用不同的电平脉冲来控制,使它工作。所以每一种微处理器都有自已的机器指令集,也就是机器语言。 早期的程序设计均使用机器语言。程序员们将用0、1数字编成的程序代码打在纸带或卡片上,1打孔,0不打孔,再将程序通过纸带机或卡片机输入计算机,进行运算。 应用8086CPU完成运算s=768+12288-1280,机器码如下: 101100000000000000000011 000001010000000000110000 001011010000000000000101 假如将程序错写成以下这样,请读者找出错误。 101100000000000000000011 000001010000000000110000 000101101000000000000101

汇编语言习题-测验题答案

汇编语言各章习题、测试题答案 习题一 分别将下列二进制数作为无符号数和带符号数转换为十进制和十六进制数 01110111 00101111 十六进制运算 1A52H+4438H 3967H-2D81H 37H×12H 1250H×4H 将十进制数变为8位补码并做运算(结果用二进制、十六进制、十进制表示) 29+53 73-24 -66+82 -102-15 用压缩BCD码计算(结果用二进制、BCD码、十进制表示) 29+53 73-24 66+18 132+75 符号位扩展(字节扩展为字,字扩展为双字) 20A3H 94H 3456H 7FH EC00H 若机器字长为16位,其无符号数表示范围是多少带符号数表示范围是多少分别用十进制和十六进制表示。 写出下列十六进制数所能代表的数值或编码: (1)38H (2)FFH (3)5AH (4)0DH 将下列十进制数分别转换为二进制、十六进制、二进制补码、压缩BCD码和ASCII码: (1)108 (2)46 (3)-15 (4)254 写出下列算式的8位二进制运算结果,标志位CF、SF、ZF、OF分别是什么值 (1)56+63 (2)83-45 (3)-74+29 (4)-12-37 查表,指出ASCII码0DH、0AH、07H、1BH、20H、60H、50H、70H对应的控制字符。 测验一 单选题: 1.已知X=76,则[X]补= 。 A. 76H B. 4CH 2.已知[X]补=80H,则X= 。 A. 80H B. 0 C. 0FFH D. -80H 3.已知[X]补=98H,则[X]补/2= 。 A. 0CCH C. 49H D. 31H 4.已知X=78,Y=-83,则[X+Y]补= 。 A. 0F5H B. 0A1H C. 0FBH D. 65H 5.将124转换成十六进制数的结果是 A. 7CH B. 7DH C. 7EH D. 7BH 6.将93H看成一个压缩BCD码,其结果是 A. B. C. D. 7. 45转换成二进制数是 A. C. 00101101 D. 8.6CH转换成十进制数是 A. 118 B. 108 C. 48 D. 68 9.将93H扩展为字的结果是 A. FF93H B. 0093H C. 1193H D. 1093H

汇编语言第二章测试题带答案

一、填空题 1、SP 是一个( 16 )位寄存器。Flags 是一个(16)位寄存器。 2、设某一堆栈段中当前栈顶的逻辑地址为 2000H:0200H,在弹出两个字后栈顶 的物理地址是(20204H)。 3、设双字 12345678H 的起始地址是 0A0000H,则此双字中 12H 所在单元的物 理地址是(A0003H)。 4、在 8086 中,每一内存单元只能有一个( 物理 ) 地址,但可以有多个( 逻 辑 )地址。 5、判断有符号数运算是否溢出应根据(OF)标志位。 6、8086 中的寄存器都是(16)位的。 7、8086 CPU 具有(16)条数据总线,(20)条地址总线,可寻址空间为(1MB) 8、逻辑段的最大寻址空间为(64)KB,地址范围为(0000H-FFFFH) 9、8086 的数据通用寄存器可以作为(8)位和(16)位的寄存器使用 10、微型计算机各部件之间是通过(系统总线)连接起来的。 11、8086 的 4 个段寄存器分别是(CS)、ES( DS )和 SS 12、堆栈操作时,每进一个数据,SP 要(减2) 13、8086 的标志寄存器共(16)位,提供给用户使用的有( 9)位。具体分 为两种,分别是(状态标志位)和(控制标志位)。 14、8086 CPU 从功能结构上看,可以分为( BLU )和(EU)两部分 三、判断题。请判断以下题的正误,对于“×”的请说明原因。 1、内存的物理地址是唯一的,每一个内存单元可存放一个16 位二进制数。( × ) 2、内存储器是计算机系统中不可缺少的部分。(√) 3、8086 CPU 为16 位处理器,一次可并行传送8 位或16 位二进制数。(√) 4、8086 CPU 的数据总线和地址总线都是 20 条。(×) 5、8086 CPU 的BIU 中包含有一个16 位的地址加法器。(×) 6、因为 8086 存储单元的段地址和偏移地址均为 16 位,则 8086 存储单元的 地址线为 32 条。(×) 7、8086 CPU 可以通过改变指令指针 IP 的内容来改变执行顺序。(√) 8、8086 CPU 的 16 位标志寄存器FR 中每位均有确定含义。(×) 9、8086 CPU 从功能结构上看,其由控制器、运算器、寄存器三部分组成。( × ) 10、堆栈指针SP 总是指向堆栈的栈顶。(√) 11、8086 CPU 允许两个逻辑段重叠或交叉。(√) 12、8086 CPU 的 BIU 部件中有一个6 个字节的指令队列(√) 13、有效地址即为偏移地址(√) 四、单项选择题 1、指令队列具有( D)的作用。 A、暂存操作数地址 B、暂存操作数 C、暂存指令地址 D、暂存预取指令 2、若某数据段位于存储区 38000H~47FFFH,则该数据段的段地址为( D )。A.38000H B.47FFFH

汇编语言第一章答案

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=7FFFH 1.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=255 1.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=4660 1.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=217893 1.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.7 下列各数均为用十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的数或字符的ASCII码时,它们所表示的十进制数及字符是什么? (1) 4F (2) 2B (3) 73 (4) 59

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

汇编语言程序设计(第二版)钱晓捷习题答案 第二章(01) 2.1 (1)AX=1200h (2)AX=0100h (3)AX=4C2Ah (4)AX=3412h (5)AX=4C2Ah (6)AX=7856h (7)AX=65B7h 2.2 (1) 两操作数类型不匹配 (2) IP指令指针禁止用户访问 (3) 立即数不允许传给段寄存器 (4) 段寄存器之间不允许传送 (5) 两操作数类型不匹配 (6) 目的操作数应为[ BP ] (7) 源操作数应为[BX+DI] (8) 立即数不能作目的操作数 2.3 lea bx,table ;获取table的首地址,BX=200H mov al,8 ;传送欲转换的数字,AL=8 xlat ;转换为格雷码,AL=12H 2.4 mov ax,8057h push ax mov ax,0f79h push ax pop bx ;bx=0f79h pop [bx] ;DS:[0f79h]=8057h 2.6 AL=89h CF ZF SF OF PF AL=12h 1 0 0 1 1 AL=0afh 0 0 1 0 1 AL=0afh 1 0 1 0 1 AL=00h 0 1 0 0 1 AL=0ffh 0 0 1 0 1 AL=00h 0 1 0 0 1 2.5 堆栈是一种按“先进后出”原则存取数据的存储区域。 堆栈的两种基本操作是压栈和出栈,对应的指令是PUSH和POP。 2.7 W=X+Y+24-Z 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,0A0H 2.9;为了避免与操作数地址混淆,将题中X,Y,Z,V 字操作数改为A,B,C,D mov ax,X ;ax=A imul Y ;dx,ax = A*B (将操作数看作符号数,以下同) mov cx,ax mov bx,dx ;bx,ax <-- dx,ax =A*B mov ax,Z ;ax = C cwd ;dx,ax =C (扩展符号后为双字) add cx,ax

汇编语言第一章预备知识

第一章预备知识 汇编语言是面向机器的低级语言: 和其他计算机语言相比,能够充分利用计算机硬件特性;随机器的不同而不同。 学习汇编语言必须做到: 了解特定机器的硬件;了解其数据类型的表示方法;了解其指令系统等。 本章的内容包括: 什么是汇编语言; 汇编源程序举例; 汇编和调试过程; 寄存器组 1.1 机器语言与汇编语言 人们用计算机语言操纵计算机,和计算机交流信息。一般来说,计算机语言可以分为以下几类: 低级语言是面向机器的,为特定机器提出的; 高级语言是面相人的,接近于自然语言,为了方便人们使用提

出的。 一、 机器语言 机器指令:能够被计算机识别,并能直接加以执行的语句。 机器语言:由机器指令构成的集合。 机器指令也叫做硬指令,不同类型的CPU 都有自己特有的、一定数量的基本指令,组成其特有的机器语言。 机器指令用二进制代码来表示,这样才能够被计算机识别并直接执行。 机器指令的一般形式为:例如:

完成操作:MOV AX, 7FH; 7FH →AX 操作码指出了运算的种类,如数据传送、加减运算等。地址码指出了参与运算的操作数和运算结果的存放位置。 用机器语言编程,就意味着要用二进制数0和1编写程序。这样做效率很低,而且容易出错。但为了能够充分利用硬件特性,在一些时候仍然需要用低级语言编程,因此人们想办法对机器语言进行改进,提出了汇编语言。此后很少直接使用机器语言了。 二、 汇编语言 从本质上看,汇编语言是一种符号化的机器语言: 用助记符表示机器指令的操作码; 用变量代替操作数的存放地址; 用在语句前加一个标号,来代表该指令的存放地址。 汇编语言的主要操作与机器指令一一对应,是一种用符号书写的(不再是二进制代码)、并遵循一定语法规则的计算机语言。例如: 1011 1000 0111 1111 0000 0000 操作码:1011,MOV 目的操作数:1000,AX 源操作数:0000 0000 0111 1111,立即数

《水力学》第二章答案汇编

第二章:水静力学 一:思考题 2-1.静水压强有两种表示方法,即:相对压强和绝对压强 2-2.特性(1)静水压强的方向与受压面垂直并指向手压面;(2)任意点的静水压强的大小和受压面的方位无关,或者说作用于同一点上各方向的静水压强都相等. 规律:由单位质量力所决定,作为连续介质的平衡液体内,任意点的静水压强仅是空间坐标的连续函数,而与受压面的方向无关,所以p=(x,y,z) 2-3答:水头是压强的几何意义表示方法,它表示h 高的水头具有大小为ρgh 的压强。 绝对压强预想的压强是按不同的起点计算的压强,绝对压强是以0为起点,而相对压强是以当地大气压为基准测定的,所以两者相差当地大气压Pa. 绝对压强小于当地大气压时就有负压,即真空。某点负压大小等于该点的相对压强。Pv=p'-pa 2-4.在静水压强的基本方程式中C g p z =+ρ中,z 表示某点在基准面以上的高度,称为位置水头,g p ρ表示在该点接一根测压管,液体沿测压管上升的高度,称为测压管高度或压强水头,g p z ρ+称为测压管水头,即为某点的压强水头高出基准面 的高度。关系是:(测压管水头)=(位置水头)+(压强水头)。 2-5.等压面是压强相等的点连成的面。等压面是水平面的充要条件是液体处于惯性坐标系,即相对静止或匀速直线运动的状态。 2-6。图中A-A 是等压面,C-C,B-B 都不是等压面,因为虽然位置高都相同,但是液体密度不同,所以压强水头就不相等,则压强不相等。 2-7.两容器内各点压强增值相等,因为水有传递压强的作用,不会因位置的不同

压强的传递有所改变。当施加外力时,液面压强增大了A p ?,水面以下同一高度的各点压强都增加A p ?。 2-8.(1)各测压管中水面高度都相等。 (2)标注如下,位置水头z,压强水头h,测压管水头p. 图2-8 2-9.选择A 2-10.(1)图a 和图b 静水压力不相等。因为水作用面的面积不相等,而且作用面的形心点压强大小不同。所以静水压力Pa>Pb. (2)图c 和图d 静水压力大小相等。以为两个面上的压强分布图是相同的,根据梯形压强分布图对应的压力计算式可知大小相等,作用点离水面距离相等。 2-11.(1)当容器向下作加速运动时,容器底部对水的作用力为F=m*(g-a),由牛顿第三定律知水对容器的压力也等于F ,根据p=F/A,知底部的压强 p=)(*)()(a g h h V a g m A a g m -==--ρ水面上相对压强为0,所以作图如a 。 (2)当容器向上作加速运动时,水对容器底部的压力大小为)(a g m F +=,则底部压强大小)()(h g h p A a g m +==+ρ,水面压强为0,作图如b 。 P P

汇编语言程序设计习题答案

第一章. 习题 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=7FFFH 1.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=255 1.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=4660 1.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=217893 1.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位二进制数,请说明当它们分别被看作是用补码表示的 带符号数或无符号数时,它们所表示的十进制数是什么?

相关主题
文本预览
相关文档 最新文档