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

上传人:奔*** 文档编号:91498025 上传时间:2023-05-27 格式:PDF 页数:56 大小:5.51MB
返回 下载 相关 举报
汇编语言程序设计(第2版)课后习题答案.pdf_第1页
第1页 / 共56页
汇编语言程序设计(第2版)课后习题答案.pdf_第2页
第2页 / 共56页
点击查看更多>>
资源描述

《汇编语言程序设计(第2版)课后习题答案.pdf》由会员分享,可在线阅读,更多相关《汇编语言程序设计(第2版)课后习题答案.pdf(56页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1.1什么是机器语言?什么是汇编语言?简述汇编语言的特点。机器语言就是用二进制编码组成的机器指令的集合和一组使用机器指令的规则。汇编语言是对机器指令中的操作码用英文单词的缩写描述,对操作数用标号、变量、常量描述。汇编语言的特点:(1)与机器有关:移植性差,但可直接控制硬件。(2)程序效率高。(3)局限性:受指令的限制,如考虑存储单元等。(4)调试困难。1.2汇编程序与汇编源程序的区别是什么?汇编源程序是指用汇编语言编写的程序,而汇编程序特指将汇编源程序汇编成目标文件的编译程序。1.3把下列十进制数转换为二进制数和十六进制数。(1)6 7(2)3 4 (3)2 5 4 (4)1 2 3答:(1)

2、1 0 0 0 0 1 1,4 3 (2)1 0 0 0 1 0,2 2(3)1 1 1 1 1 1 0 1,F E (4)1 1 1 1 0 1 1,7B1.4把下列二进制数转换为十六进制数和十进制数。(1)0 1 1 0 1 1 0 1 (2)1 0 1 1 0 0 1 0 (3)1 1 1 1 1 1答:(1)6 D,1 0 9 (2)B 2,1 78,(3)3 F,6 31.5作下列十六进制数的运算,并转换为十进制数校核。(D 5 A+6 4 (2)86-4 9 (3)1 2 3-9 A (4)4 3 X2 6答:(1)B E (2)3 D (3)89 (4)B 4 11.6根据补码定

3、义把下列十进制数表示为8位二进制补码。(1)6 4 (2)-2 4答:(1)0 1 0 0 0 0 0 0 (2)1 0 0 1 1 0 0 0 原=1 1 1 0 1 0 0 0 补2.1 简述计算机系统组成。答:计算机由中央处理器C P U,存储器,输入系统,输出系统组成,由系统总线连接在一起。C P U包括运算器和控制器,运算器执行指令,控制器负责计算机的控制。存储器是计算机的记忆部件,以二进制形式存放程序和数据。输入输出系统包括大容量存储器,如硬盘,以及其他外设,如鼠标,键盘,显示器等。2.2 简 述1 6位机的各类寄存器的主要作用。答:数据寄存器:A x,B x,C x,D x;A

4、X:作为累加器,是算术运算的主要寄存器。在乘除等指令中存放操作数,在I/O指令中使用它与外部设备传送信息。B X:当通用寄存器使用,在计算存储器地址时,作基址寄存器使用。C X:当通用寄存器使用,此外常用来保存计数值,当计数器使用。D X:当通用寄存器使用,一般在作双字长运算时把D X和A X组合使用,对某些I/O 操作,D X用来存放I/O 的端口地址。(2)地址寄存器:S p,B p,S i,D i(3)段寄存器:C s,D s,E s,S s;段寄存器的作用是专用于存储器寻址,用来直接或间接地存放段地址。(4)专用寄存器:I p,F l a g s;I p 寄存器专门存放下一条指令的地址

5、,F l a g s标志寄存器,又称程序状态寄存器。它是存放条件码标志、控制标志和系统标志的寄存器。2.3 写出每条汇编指令执行后相关寄存器的值。Mov a x,1 3 4 5 Ha x=_ _ 1 3 4 5 H _Mov a h,2 4 Ha x=_ 2 4 4 5 H _Mov a l,4 5 Ha x=_ 2 4 4 5 H _Mov b x,3 4 1 2 Hb x=_ 3 4 1 2 H _Mov a l,b ha x=_ 2 4 3 4 H _2.4 实模式下,写出段地址和偏移地 址 为 1 2 3 4:2 0 0 2、1 4 3 0:0 0 4 2、F F OO:OF F F

6、的物理地址。答:1 2 3 4:2 0 0 2=1 2 3 4 0+2 0 0 2=1 4 3 4 21 4 3 0:0 0 4 2=1 4 3 0 0+0 0 4 2=1 4 3 4 2F F OO:OF F F=F F OOO+OF F F=F F F F F2.5 下列各数均为十进制数,请采用8 位二进制补码运算,并回答标志寄存器F LA G S 中C F 和 OF 的值,运算结果所代表的十进制数是多少?如果用1 6 位二进制补码运算,其结果所代表的十进制数是多少?F LA G S中C F 和 OF 的值呢?(1)85+6 9(2)85+(-6 9)(3)85-(-6 9)(4)85-(

7、6 9)答:85=5 5 H,6 9=4 5 H,-6 9=B B H,8 位二进制补码运算:(1)85+6 9=5 5 H+4 5 H=9A H=1 5 4,C F=O,OF=1(2)85+(-6 9)=5 5 H+B B H=1 0 H=1 6,C F=1,OF=0(3)85-(-6 9)=5 5 H-B B H=9A H=1 5 4,C F=1,OF=1(4)85-(6 9)=5 5 H-4 5 H=1 0 H=1 6,C F=O,0 F=01 6 位二进制补码运算:85=0 0 5 5 H,6 9=0 0 4 5 H,-6 9=0 F F B B H,(1)85+6 9=0 0 5 5

8、 H+0 0 4 5 H=0 0 9A H=1 5 4,C F=O,OF=0(2)85+(-6 9)=0 0 5 5 H+0 F F B B H=0 0 1 0 H=1 6,C F=1,0 F=0(3)85-(-6 9)=0 0 5 5 H-0 F F B B H=0 0 9A H=1 5 4,C F=1,OF=0(4)85-(6 9)=0 0 5 5 H-0 0 4 5 H=0 0 1 0 H=1 6,C F=O,0 F=02.6 给定段地址为0 0 0 1 H,仅通过变化偏移地址寻址,C P U 的寻址范围从_ _ _ _ 0 0 0 1 OH 至 u _ _ _1 OOOF H o2.7

9、 有一数据存放在内存2 0 0 0 0 H 单元中,现给定段地址为S A,若想用偏移地址寻到此单元,则 S A 应满足的条件是:最小为,最大为2 0 0 0 H o2.8 已知80 86 系统某存储单元物理地址为:5 2 5 0 6 H,你认为段基址的最大值、最小值分别是多少?80 86 微机最多可以有多少个不同的段基址答:5 2 5 0 6=5 0 0 0 0+2 5 0 6,=5 2 5 0 0+0 0 0 6,基地址最大为 5 2 5 0,最小为5 0 0 0(4 2 5 1).段地址取值范围:0 0 0 0 F F F F o 既6 5 5 3 6 个。2.9 从物理地址为0 0 1

10、0 0 H 开始到0 0 1 0 3 H 单元中顺序存放的数据为:1 2 H,3 4 H,5 6 H,7 8HO请画出数据存放示意图,并回答以下问题:(1)写出0 0 1 0 1 H 字节单元的内容(2)写出0 0 1 0 2 H 字单元的内容答案:(1)(0 0 1 0 1)=3 4 H(2)(0 0 1 0 2)=7 85 6 H3.1 写出从汇编语言源程序的建立到产生可执行文件的步骤和上机操作命令。答:(1)用编辑程序E D IT 建 立.A S M源文件(2)用汇编程序MA S M把.A S M文件原文件汇编成.OB J 文件(3)用连接程序LINK 将.OB J 文件转换成.E X

11、E 文件(4)在 D OS 下直接运行.E X E 文件或在D E B U G 下调试该.E X E 文件3.2 列表文件.LS T 是在什么阶段产生的?列表文件.LS T 中有哪些内容?答:*.LS T 在汇编得到*.o bj 的同时得到,列表文件报告了汇编过程中产生的很多有价值的参考信息。主要包括源程序和机器语言清单、指令和变量的偏移地址等等。3.3 写出定义一个代码段的语句,段名为MY PRG。答:MY PRG s e g m e n ta s s u m e cs:MY PRGs t a r t:MY PRG e n dsE n d s t a r t3.4 程序中用什么语句来结束程序

12、的执行?用什么语句来表示程序的结束和指出程序执行的起点?答:程序的结束:m o v a h,4 chi n t 2 1 h程序的结束和指出执行的起点:E n d s t a r t3.5 汇编语言源程序的文件扩展名是什么?把它改为.E X E 扩展名后,可以认为是可执行程序吗?答:源程序的文件扩展名为*.a s m,改扩展名不可以执行。3.6 列出子目录C:YOUPRG 下的扩展名为.A SM的所有文件,在 D盘根目录下建立一个子目录MYPRG,并进入子目录MYPRG,再 把 C:YOUPRG 下的文件YOU.A SM复制到D:MYPRG 下。写出完成以上要求的D OS命令。答:列出子目录:C

13、:YOUPRG d i r *.a s m(2)建立子目录:D:MD MYPRG(3)复制:C:YOUPRG c o p y YOU.a s m D:MYPRG3.7 下图为D E B UG 调入的可执行程序,回答以下问题:(1)程序的起始物理地址是多少?结束地址是多少?C S寄存器的值是什么?程序的功能是什么?写出查看D S:O处内容的D E B UG 命令。程序中2 处的I NT 2 1 指令执行后有什么结果?如果要运行这个程序应该用什么D E B UG 命令?D E B UG 命令-T=0 4之后,寄存器A X、D S、D X的值是多少?7777)77234567(/(/(/(X0663

14、:0000 B8620B0B63:0003 8ED80B63:0005 BA00000663:0008 B4090B63:000A CD210B63:000C B44C0B63:000E CD210663:0010 8B45060B63:0013 8B1ED00D0B63:0017 89070663:0019 8306D00D020B63:001E F606544D01UUUUTUTUUUDSOOOONONOOODEAX,0B62DS,AXDX,0000AH,0921AH,4c21AX,DI+06BX,0DD0BX AXW ORD*PTR 0DD0L-02BYTE PTR 4D54J,01答:

15、(D 0 B 6 30,0 B 6 3E(2)0 B 6 3(3)显示0 B 6 2:0 0 0 0 存储的字符串(4)-d 0 B 6 2:0 0 0 0(5)第一处显示字符串,第二处结束程序(6)-g(7)(A X)=0 9 6 2,(D S)=0 B 6 2,(D X)=0 0 0 03.8解释D E B UG 程序中的如下调试命令。-D ,-E,-T,-G,-A ,-R答:-D 显示内存内容-E 修改内存单元内容-T跟踪命令-G 运行命令-A汇编命令-R查看或修改寄存器内容3.9用D E B UG调入PROG.E XE后,若程序列出如下:1 2 34:0 1 0 0 MOVB X,4

16、0 0 0 1 2 34:0 1 0 4 MOVA X,B P1 2 34:0 1 0 6 MOVA H,1 2 34:0 1 0 8 I NT2 11 2 34:0 1 0 A MOVD L,A L1 2 34:0 1 0 C MOVA H,1 2 34:0 1 0 E I NT2 1121 2 34:0 1 1 0 RE T列出上面程序的D E B UG命令是()o寄存器C S的值为(),第一条指令的物理地址为()o如果要修改寄存器B X为1 2 0 0 H,应键入D E B UG命令()。若要修改第二条指令中的B P为B X,应键入D E B UG命令()。U1 2 34 H1 2 4

17、4 0 HR B XA 0 1 0 4 答17)z)/)/)/12345z(z(z(z(z(3.1 0简述在W I N7系统中执行汇编的方法。D o s B o x是一款在W i n d o w s系统运行D O S程序的环境模拟器。下载安装D o s B o x,运行该程序,出现D o s B o x运行界面,运行挂载命令m o u n t,即可以将D o s程序放置在W i n d o w s环境下D o s模拟器中运行,其过程为挂载。3.11简述D OS系统功能I NT 2 1 H调用方法。答:(1)将调用功能的功能号存入A H寄存器。(2)如必要,设置该调用功能的入口参数。(3)执行I

18、 NT 2 1 H指令。(4)如必要,按规定取得出口参数(返回参数)。3.1 2 D e b u g命令调试含有“I NT2 1 H”命令的程序段时,如何实现单步执行,“-t”命令为何无法实现?答:“I NT2 1 H”指令是D o s的系统调用,如果使用“T”跟踪,则进入D OS系统子程序。如果希望单步执行,可以通过P命令或-g=x x+1”来实现。3.1 3有主存数据段存放情况如下图所示,请写出代码,输出数据段的字符串i n s p i r e a g e n e r a t i o n !Hd 145B:0145B:0000t45B:0010145B:0020145B:0030145B:

19、00401456:0050145B:0060145B:00709182129562DCCF870EEB8B00768318FD3F41B8EB761D8C40E9B303986650108F9487BEB667BD8F557200B477E3337E0565004C2A02FFFAB820-61 2000-00 00CD-21 26BB-DE Cl83-38 FF89-7E F4BB-C6 E81F-00 EB67008BE374EB0541E09BB89660888B87507200E96000109865 72 6100 00 0046 FE 8B36 B4 52C7 2B 46ID 00

20、 EB46 F6 89FC 8B 5E答:m o v a x,1 4 5 Bm o v d s,a xm o v a h,0 9m o v d x,0i n t 2 1 h2.1简述计算机系统组成。答:计算机由中央处理器C PU,存储器,输入系统,输出系统组成,由系统总线连接在一起。C PU包括运算器和控制器,运算器执行指令,控制器负责计算机的控制。存储器是计算机的记忆部件,以二进制形式存放程序和数据。输入输出系统包括大容量存储器,如硬盘,以及其他外设,如鼠标,键盘,显示器等。2.2简述1 6位机的各类寄存器的主要作用。答:(1)数据寄存器:A x,B x,C x,D x;A X:作为累加器,

21、是算术运算的主要寄存器。在乘除等指令中存放操作数,在I/O指令中使用它与外部设备传送信息。B X:当通用寄存器使用,在计算存储器地址时,作基址寄存器使用。C X:当通用寄存器使用,此外常用来保存计数值,当计数器使用。D X:当通用寄存器使用,一般在作双字长运算时把D X和A X组合使用,对某些I/O操作,D X用来存放I/O的端口地址。(2)地址寄存器:Sp,B p,Si,D i(3)段寄存器:C s,D s,E s,Ss;段寄存器的作用是专用于存储器寻址,用来直接或间接地存放段地址。(4)专用寄存器:I p,F l a g s;I p寄存器专门存放下一条指令的地址,F l a g s标志寄存

22、器,又称程序状态寄存器。它是存放条件码标志、控制标志和系统标志的寄存器。2.3写出每条汇编指令执行后相关寄存器的值。Mo va x,1 3 4 5 Ha x=1 3 4 5 HMo va h,2 4 Ha x=2 4 4 5 HMo va l,4 5 Ha x=2 4 4 5 HMo vb x,3 4 1 2 Hb x=3 4 1 2 HMo va l,b ha x=2 4 3 4 H2.4 实模式下,写出段地址和偏移地址为1234:2002、1430:0042.FF00:0FFF的物理地址。答:1234:2002=12340+2002=143421430:0042=14300+0042=14

23、342FF00:0FFF=FF000+0FFF=FFFFF2.5 下列各数均为十进制数,请采用8 位二进制补码运算,并回答标志寄存器FLAGS中CF和 0F的值,运算结果所代表的十进制数是多少?如果用16位二进制补码运算,其结果所代表的十进制数是多少?FLAGS中CF和 OF的值呢?(1)85+69(2)85+(-69)(3)85-(-69)(4)85-(69)答:85=55H,69=45H,-69=BBH,8 位二进制补码运算:(1)85+69=55H+45H=9AH=154,CF=O,OF=1(2)85+(-69)=55H+BBH=10H=16,CF=1,0F=0(3)85-(-69)=5

24、5H-BBH=9AH=154,CF=1,0F=l(4)85-(69)=55H-45H=10H=16,CF=O,0F=016位二进制补码运算:85=0055H,69=0045H,-69=0FFBBH,(1)85+69=0055H+0045H=009AH=154,CF=O,0F=0(2)85+(-69)=0055H+0FFBBH=0010H=16,CF=1,0F=0(3)85-(-69)=0055H-0FFBBH=009AH=154,CF=1,0F=0(4)85-(69)=0055H-0045H=0010H=16,CF=O,0F=02.6 给定段地址为0001H,仅通过变化偏移地址寻址,C P U

25、 的寻址范围从00010H 至 I 1OOOFH o2.7 有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元,则 S A 应满足的条件是:最小为,最大为2000H o2.8 已知8086系统某存储单元物理地址为:52506H,你认为段基址的最大值、最小值分别是多少?8086微机最多可以有多少个不同的段基址答:52506=50000+2506,=52500+0006,基地址最大为 5250,最小为5000(4251).段地址取值范围:0000 FFFFo既65536个。2.9 从物理地址为00100H开始到00103H单元中顺序存放的数据为:12H,34H,56

26、H,78Ho请画出数据存放示意图,并回答以下问题:(3)写出00101H字节单元的内容(4)写出00102H字单元的内容答案:(1)(0 0 1 0 1)=3 4 H(2)(0 0 1 0 2)=7 8 5 6 H5.1 溢出标志O F与进位标志C F有何作用和区别?答:处理器对两个操作数进行运算时,按照无符号数求得结果,并相应设置进位标志CF;同时,根据是否超出有符号数的范围设置溢出标志OF。应该利用哪个标志,则由程序员来决定。也就是说,如果将参加运算的操作数认为是无符号数,就应该关心进位;认为是有符号数,则要注意是否溢出。5.2 有符号数比较大小,当 AX SP=1EH AXSP=1CH

27、BXAXSP=1AH CXBXAXST=ISHDXCXBXAX5.9 求出7450H与以下各十六进制数的和及差,的值。(1)1234H(2)5678H(3)9804H答:SF、ZF、CF、OF(l)1234H+7450H,100 15678H+7450H,100 19804H+7450H,001 0并根据结果标出SF、ZF、CF、OF标志位(4)E0A0H(4)E0A0H+7450H,0 0 105.1 0在数据段有3 2位的无符号数变量X,Y,按如下格式定义,其中,?请用数值代替,用16位指令按要求写出程序。XDW?i9YDW?,9Z DW(l)Z=X+Yo?f9 9?f 9 Z二 X-Y。

28、(3)Z=|X Y|。(4)Z=XxYo答:(1)X和Y两个字数据相加,和存放在Z中。MOV AX,XMOV DX,X+2ADD AX,YADC DX,Y+2MOV Z,AXMOV Z+2,DX(2)MOV AX,XMOV DX,X+2SUB AX,YSBB DX,Y+2MOV Z,AXMOV Z+2,DX(3)MOV AX,XMOV DX,X+2SUB AX,YSBB DX,Y+2TEST AX,8000HJZ ExitNOTAXNOTDXADD DX,1ADC AXZOExit:MOV Z,AXMOV Z+2,DX(4)MOV AX,XMUL YMOV Z,AXMOV Z+2,DXMOV

29、AX,X+2MUL YADD Z+2,AXADC DX,0MOV Z+4,DXMOV AX,XMUL Y+2ADD Z+4,AXADC DX,0MOV Z+6,DXMOV AX,X+2MUL Y+2ADD Z+6,AXADC DX,0MOV Z+8,DX5.11 用移位指令为主实现对A X中的无符号数乘以5,不考虑乘积可能超出16位。答:MOV DX,AXMOV CL,2SHL AX,CLADD AX,DX5.1 2 用移位指令为主实现对A X中的无符号数乘以5,考虑乘积可能超出16位的情况。答:MOV DX,0MOV BX,AXSHL AX,1ADC DX,0SHL DX,1SHL AX,1

30、ADC DX,0ADD AX,BXADC DX,05.1 3 把A X中的内容依次倒排序,即第0位移到第15位,第1位移到第14位,。答:先设AX值Mov di,0Mov bx,0Mov si,lMov c,2Ror ax,lK:Ro I ax,clMov bx,axAnd bx,siAdd di,bxShi,si,1Cmp siz0Jnz kMov ax,di5.14在数据段有如下定义:BUFF DB ABCD$EFGHIJK$STR1 DB 12 DUP(?)LEN DB?用串指令编写程序完成以下操作:(1)对字符串STR1全部置”符。从左到右把BUFF中的字符串传送到STR1。从右到左把

31、BUFF中的字符串传送到STR1。(4)比较BUFF与 STR1两个字符串是否相等,如相等则D X=1,否则DX=0。(5)查找BUFF中有无字符$,把字符$出现的次数计入BX寄存器。答:(1)MOV AX,DATAMOV DS,AXMOV AL,LEA DI,STR1MOV CX,STR1-BUFFCLDREP STOSB(2)MOV AX,DATAMOV DS,AXMOV ES,AXCLDLEA SI,BUFFLEA DI,STR1MOV CX,STR1-BUFFREP MOVSB(3)MOV AX,DATAMOV DS,AXMOV ES,AXSTDLEA SI,STR1-1LEA DI,

32、LEN-1MOV CX,STR1-BUFFREP MOVSB(4)MOVAX,DATAMOVDS,AXMOVES,AXCLDLEA SI,BUFFLEADI,STR1MOVCX,STR1-BUFFREPECMPSBLEA SI,BUFF(5)MOVAX,DATAMOVES,AXMOVCLDBX,0MOVAL,$NEXT:REPNE SCASBMOVCX,STR1-BUFFINC BXJCXZNO-FOUNDJMPNEXT5.1 5 对于给定的A X和B X的值,执行下列程序段,程序将转向哪里?ADD AX,BXJNO LIJNC L2SUB A X,BXJNC L3JNO L4JMP L5答:

33、LI,LI,L5(1)AX=1234H,(2)AX=790EH,(3)AX=E002H,BX=6789HBX=8831HBX=8086H5.1 6 下面不完整的程序段是比较A X和B X的值,把其中大的数送M A X变量。如果是无符号数,应如何填写指令?如果是有符号数,应如何填写指令?CMP A X,BX()M OV M A X,AX()L I:M OV M A X,BXL2:HLT答:JB LIJMP L25.1 7在下列程序段的括号中分别填入如下指令,程序执行完后,A X、C X的内容是什么?(l)LO O P L1(2)LOOPE L1(3)LOOPNZ L1MOV AX,6MOV CX

34、,3L I:ROL AX,CLTEST AL,3()答:(1)AX=0C000H,CX=OOOO(2)AX=0003H,CX=OOO2(3)AX=OCOOOH,CX=OOOO5.1 8测试A L寄存器,如果最高位和最低位同时为0,则转L 0,如果最高位和最低位只有一位为1,则转L 1,如果最高位和最低位同时为1,则转L2。画出流程图,并编写程序段。答:Code segmentAssume cs:codeStart:ROR AL,1AND AL,3JZ L0SUB AL,3JZ L2JMP LIL0:JMP ExitLI:JMP ExitL2:Exit:hitcode endsend start

35、开始5.19从键盘输入一个英文字母,显示输出其大写。画出流程图,并编写程序段。答:Code segmentAssume cs:codeStart:Mov ah,lI nt21hsub al,2Ohmov dlzalmov ah,2int 21hhitcode endsend start5.20从键盘输入一位数字N,显示输出N 个 N。画出流程图,并编写程序段。答:CODE SEGMENTASSUME CS:CODESTART:MOV AH,1INT21HMOV DL,ALAND AL,OFHMOV CL,ALMOV CH,0NEXT:MOV AH,2INT21HLOOP NEXTMOV 4CH

36、INT21HCODE ENDSEND START5.21在数据段有压缩的BCD码表示的十进制数,写出指令分别完成十进制加法A+B,K+J和减法AB,KJ。结果放在AX,回答A X 的内容。A DB 65H,B DB 37HK DB 98HJ DB 69H答:MOV Al,AMOV BI,BADD AL,BLAAASUB AL,BLDAS(2)MOVAI,KMOV BIJADD AL,BLAAASUB ALZBLDAS(l)A+B=9CH/AX=0102H.A-B=2EH,AX=0028H(2)K+J=01H/AX=0107H.K-J=2FH/AX=0029H5.22用相对基址变址寻址方法求AR

37、RAY行列式的值。ARRAY DW 2,3,5DW 1,4,6DW 2,7,9答:data segmentArray dw 2,3,5dw 1,4,6dw 2,7,9data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov ax,0mov bx,Offfaha:mov si,0add bx,6cmp bx,13jg db:add ax,arraybxsicmp si,3jg aadd si,2jmp bd:hitcode endsend start6.1 画图说明下列数据定义语句所示内存空间的数据,并回答寄

38、存器的值。O R G 0A R R A Y L A B E L B Y T ED A I D W 2,9,1 4,3,3 1 5 H,-6D A 2 D B 7,A B C D E D F G L E N =$-D A 2O R G 1 0 0 HD A 3 D W D A 4D A 4 D B 4 D U P(2 D U P(1,2,3),4)o o o o o oM O V A L,A R R A Y+2 (A L)=()HA D D A L,D A 2+1(A L)=()HM O V A X,D A 2-D A 1(A X)=()HM O V B L,L E N(B L)=()HM O

39、V A X,D A 3(A X)=()HM O V B X,T Y P E D A 4(B X)=()HM O V B X,O F F S E T D A 4(B X)=()HM O V C X,S I Z E D A 4(C X)=()HM O V D X,L E N G T H D A 4(D X)=()HM O V B X,W O R D P T R D A 4(B X)=()HM O V B L,L E N A N D O F H(B L)=()HM O V B L,L E N G T 5(B L)=()HM O V A X,L E N M O D 5(A X)=()H答:M O V

40、A L,A R R A Y+2(A L)=(0 9 )HA D D A L,D A 2+1(A L)=(4 1 )HM O V A X,D A 2-D A 1(A X)=(0 0 0 c )HM O V B L,L E N(B L)=(0 9 )HM O V A X,D A 3(A X)=(0 1 0 2 )HM O V B X,T Y P E D A 4(B X)=(0 0 0 1 )HM O V B X,O F F S E T D A 4(B X)=(0 1 0 2 )HM O V C X,S I Z E D A 4(C X)=(0 0 0 4 )HM O V D X,L E N G T

41、H D A 4(D X)=(0 0 0 4 )HM O V B X,W O R D P T R D A 4(B X)=(0 2 0 1 )HM O V B L,L E N A N D O F H(B L)=(0 9 )HM O V B L,L E N G T 5(B L)=(f f )HM O V A X,L E N M O D 5(A X)=(0 0 0 4 )H6.2 变量和标号有哪些区别?变量和标号有哪些属性?如何获取属性值?写出指令。答:变量是为指令提供的操作数,标号是为指令提供标识,都是为了在指令中引用。它们最主要的属性有:偏移属性,段属性,类型属性。例如:M O V B X,O F

42、 F S E T V A L ;取偏移属性M O V B X,S E G V A L ;取段属性M O V B X,T Y P E V A L ;取类型属性6.3 指令和伪指令的区别在哪里?伪指令可以出现在代码段吗?指令可以在数据段吗?答:指令只能出现在代码段,定义数据的伪指令通常在数据段,伪指令在代码段两端也可,但不能在指令之间。6.4 下面的程序能否输出字符09?如不能,应如何修改?C O D E S E G M E N TA S S U M E C S:C O D EK=3 0 HJ D W 0S T A R T:M O V D L,KM O V A H,2I N T 2 1 HK=K+

43、1I N C JC M P J,1 0J N Z S T A R TM O V A H,4 C HI N T 2 1 HC O D E E N D SE N D S T A R T答:通过汇编和连接可以运行,但程序真正意图是输出A S C H 码为3 0 H 3 9 H 的字符 0 9,应作修改。C O D E S E G M E N TA S S U M E C S:C O D EK=3 0 H ;改为 K D B 3 0 HJ D W 0S T A R T:M O V D L,KM O V A H,2I N T 2 1 HK=K+1 ;K=K+1 是伪指令,没生成代码,改 为 I N C

44、KI N C JC M P J,1 0J N Z S T A R TM O V A H,4 C HI N T 2 1 HC O D E E N D SE N D S T A R T6.5 用 1 6 位指令编写完整程序,并上机调试,计算V=(X+Y)*R,其中所有变量均为3 2 位变量,X、Y、R的具体数值由你自己确定,变量定义格式如下:X D W?,?Y D W?,?R D W?,?V D W 4 d up(?)答:(3 2 位指令)d a ta s e g m e n tx d w 1y d w 2r d w 3v d w 4 d up (?)d a ta e n d sc o d e s

45、 e g m e n ta s s um e c s:c o d e,d s:d a ta.3 8 6 ps ta r t:m o v a x,d a tam o v d s,a xm o v e a x,xa d d e a x,ym o v e b x,rim ul e b xm o v v,e a xm o v v+4,e d xm o v d l,a la d d d l,3 0 hm o v a h,2in t 2 1 hm o v a h,4 c hin t 2 1 hc o d e e n d se n d s ta r tA R R A Y L A B E L B Y T E6

46、.6数据定义如下:执行下列指令,填写寄存器的值D A 1D A 2L E NM O VA D DM O VM O VM O VD W 2,9,1 4,3D B 7,A B C D E D F=$-D A lA L,A L,A X,A X,B L,A R R A Y+2D A 2+1D A 2-D A 1D A 1+1L E N(A L)=(A L)=(A X)=(A X)=(B L)=()H)H)H)H)H答:M O V A L,A R R A Y+2(A L)=(0 9 )HA D D A L,D A 2+1(A L)=(4 1 )HM O V A X,D A 2-D A 1(A X)=(0

47、 0 0 8 )HM O V A X,D A 1+1(A X)=(0 9 0 0 )HM O V B L,L E N(B L)=(1 0 )H6.7定义数据段,满足如下要求:(1)a rra y 为字符串变量:in spire a gen era tio n!;(2)d a ta l为十六进制数:0FEDCBAH(3)d a ta 2 为二进制数:1 01 01 01 0B(4)d a ta 3 为 1 00个为零的字节变量。(5)分配5 00个字的空间待用。答:d a ta segmen tArra y d b 4in spire a gen era tio n!Da ta l d f O

48、fed c b a hDa ta 2 d b 1 01 01 01 0BDa ta 3 d b 1 00 d up(0)d w 5 00 d up(?)d a ta en d s6.8 假设程序中,数据段定义如下:Da ta l d b 5 0 d up(?)Da ta 2 d w 1 0 d up(0)Da ta 3 d q 5 d up(2 d up(1,2)(1)用指令将数据段首地址放入数据段寄存器中。(2)用一条指令将d a ta 2 的第一个数据放入BX 寄存器中。(3)将数据段字节数放入CX 寄存器。答:mo v a x,d a ta l mo v d s,a xM o v b x

49、,d a ta 2 0M o v ex,5 0+1 0*2+2 0*86.9 现有数据定义如下:Arra y 1 d w 5 DUP (0)Arra y 2 EQ U BY T E P T R Arra y 1请说明这两个变量之间的联系。答:当汇编后,P T R 类型操作符使Arra y 2 具有Arra y 1 相同的段地址和偏移地址,但它的数据类型为字节型。6.1 0 给出下列程序段汇编后的结果:Va li EQ U 6Va l2 EQ U 3M O V BX,(Va li L T 5)AN D 2 0M O V BX,(VAL 2 GE 1)AN D 3 0M O V BX,(Va l2

50、 AN D 5)O R (VAL I GE 5)M O V BX,(Va l2 -VAL I)GE 5答:M O VBX,0 M O V BX,3 0 M O V BX,FF M O V BX,06.1 1 设数据段定义如下:Da ta segmen tO rg 2 0hDa ta l=4Da ta 2=d a ta l+2 5 hDa ta 3 d b 1 2 3 4 5 6Db 4 7 h,4 8 hCo un t EQ U$-d a ta lDa ta en d s回答下列问题:(1)Da ta l的偏移地址是多少?(2)Co un t的值是多少?答:(1)002 0h(2)002 4

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁