汇编与接口第四章作业

合集下载

第4章-汇编语言程序设计习题解答

第4章-汇编语言程序设计习题解答

习题4.10
• 下面程序段是实现从键盘输入十个一位10进制数后 累加,最后累加和以非压缩BCD码形式存放在AH (高位)和AL (低位)中。试把程序段中所空缺 的指令填上。 XOR BX ,BX ;BX清零 MOV CX,10 ; 传送数据长度 LOP:MOV AH,01H;中断INT 21H的01H号调用 INT 21H ;中断调用P172, 键入值送入AL中 MOV AH,BH ;将BH的内容传AH ADD AL,BL ;BL与AL的值相加,结果在AL中 AAA ;非压缩BCD码加法调整 MOV BX,AX ;累加结果送BX LOOP LOP ;CX-1→CX,判断CX≠0,则转
LOP: LODSB XCHG AL,[DI] XCHG SI,DI DEC DI STOSB XCHG SI,DI INC DI LOOP LOP
习题4.14
• 现有一子程序: SUB1: PROC TEST AL,80H(1000 0000B);AL的值与80H相“与”,判断正负 JE PLUS ;如果AL的首位为0(即为正),则转移到PLUS ;如果AL为负,则顺序执行 TEST BL,80H ; 判断BL的值的正负 JNE EXITO ;如果BL的首位为1(为负),则转移到EXITO ;如果BL为正,则顺序执行 JMP XCHANGE;转移到XCHANGE PLUS: TEST BL,80H ;判断BL的值的正负 JE EXITO ;如果BL的首位为0(即为正),则转移到EXITO ;如果BL为负,时顺序执行 XCHANGE: XCHG AL,BL ;AL与BL交换 EXITO: RET ;返回主程序 SUB1 ENDP 试回答(1)子程序的功能是什么? (2)如调用前AL=9AH,BL=77H,那么返回主程序时AL=?;BL=? 解答:(1)子程序的功能是判别AL和BL中的数是否为异号数,当为异号时交换,否则不 变。 (2) AL中的数据的最高位为1,BL中的数据的最高位为0,即两个数为异号,所以 要交换AL和BL中的内容,即AL=77H,BL=9AH。

微机原理及接口第四章习题答案

微机原理及接口第四章习题答案

“微机系统原理与接口技术”第四章习题解答1.判断以下说法能否正确,若有错,请说明原由并更正。

(1)伪指令在汇编过程中不会产生二进制代码。

(2)宏和过程的同样之处是都可用于简化源程序书写、精简目标代码。

(3)在计算机中,高级语言往常需要变换为汇编语言后才能履行。

(4)汇编语言程序上机一般包含编写、汇编、链接和调试几个步骤。

答:( 1)正确。

(2)错误。

宏不可以精简目标代码。

(3)错误。

高级语言程序经编译或解说后直接变换为目标代码。

(4)正确。

2.已知数据和符号定义A1DB?A2DB8K1EQU 100判断以下指令的正误,并说明错误指令的原由。

(1) MOVK1, AX(2) MOVA2, AH(3) MOVBX, K1MOV [BX] , DX(4) CMPA1, A2( 5) K1EQU 200答:( 1)错误。

K1 是符号常数,在此处相当于立刻数100 ,故不可以做目的操作数。

(2)正确。

(3)正确。

(4)错误。

A1、 A2 都是字节变量,相当于两个储存器单元,故不可以同时出现在一条指令中直接进行比较。

( 5)错误。

用EQU定义的符号不可以从头赋值,除非已用PURGE排除了原值。

3.若数据段中有定义NUM1EQU 23HNUM2DW0则指令MOV NUM2, NUM1 的源、目操作数的寻址方式以及指令履行后NUM2+ 1 单元的内容分别是什么?答:指令 MOV NUM2,NUM1的源操作数使用立刻数寻址,目的操作数使用直接寻址。

指令履行后NUM2+ 1 单元的内容是0。

4.设 DS=6000H, BX=8432H,SS=5000H,SP=3258H,内存 69632H~ 69635H 单元的内容挨次是 00H、11H、22H、33H。

4 字节指令 CALL DWORDPTR[BX+1200H] 自己位于 2000H:3250H处的双字单元中。

当8086 履行该指令后转移至子程序进口时,CS、IP 、 SS、SP 各寄存器以及栈顶 2 个字单元的内容分别是多少?答:履行结果为CS=3322H,IP=1100H ,SS=5000H,SP=3254H,栈顶的两个字即断点地点,为2000H: 3254H。

微机原理、汇编语言与接口技术-第四章-习题答案-人民邮电出版社-(周杰英-张萍-郭雪梅-著)

微机原理、汇编语言与接口技术-第四章-习题答案-人民邮电出版社-(周杰英-张萍-郭雪梅-著)

微机原理、汇编语言与接口技术-第四章-习题答案-人民邮电出版社-(周杰英-张萍-郭雪梅-著)第4章汇编语言程序设计习题与参考答案1、指出以下数据定义伪指令所分配的字节数(8086系统)。

(1)DATA1 DB 10,?,‘A’(2)DATA2 DW 10 DUP(2,3 DUP(?),1)(3)DATA3 DB ‘HELLO,WORLD!’,‘$’(4)DATA4 DW D ATA4解:(1)3字节;(2)100字节;(3)13字节;(4)2字节。

2、指出以下数据定义伪指令所分配的字节数(80386系统)。

(1)DATA1 DF 12,34,56(2)DATA2 DF D ATA2(3)DATA3 DQ 0,10 DUP(?)(4)DATA4 DT 0,1,2解:(1)18字节;(3)6字节;(3)88字节;(4)30字节。

3、指出以下指令中哪些是无效的,并说明原因。

(1)ADDR DB $(2)DATA DB F0H,12H(3)1_DATA DW 1234H(4)@VAR DW V AR1 ;VAR1为一个字节变量(5)MOV AX,[10-VAR1] ;VAR1为一个字变量(6)MOV BX,[VAR2*2+1] ;VAR2为一个字变量解:(1)非法,地址计数器$是32位数;(2)非法,以字母开头的16进制数应在前面加“0”,即应为“0F0H”;(3)非法,变量名非法,不能以数字开头;(4)合法;(5)非法,地址表达式不能是“常数-地址”;(6)非法,地址表达式不能出现乘法。

4、假设已定义数据段如下:DATA SEGMENTORG 100HDATA1 DB 10 DUP(1,2,3)DATA2 DW DATA1,$DATA ENDS且段寄存器DS已初始化为该数据段的段基址(假设段基址为1234H)。

请指出以下指令执行后,相应的寄存器中的内容。

(1)MOV AX,WORD PTR DATA1 ;(AX)=?(2)MOV BX,DATA2 ;(BX)=?(3)MOV CX,DATA2+2 ;(CX)=?(4)MOV DX,OFFSET DATA2 ;(DX)=?(5)MOV SI,SEG DATA1 ;(SI)=?(6)MOV DI,LENGTH DATA1 ;(DI)=?(7)MOV SP,TYPE DATA1 ;(SP)=?(8)MOV BP,SIZE DATA2 ;(BP)=? 解:(注意是16进制,算的时候要转换) (1)(AX)=0201H;(2)(BX)=0100H;(3)(CX)=0120H;(4)(DX)=011EH;(5)(SI)=1234H;(6)(DI)=000AH;(7)(SP)=0001H;(8)(BP)=0002H。

汇编习题答案 - 第四章

汇编习题答案 - 第四章

DATA_SEG SEGMENT AT 0E000H
ARRAY_B LABEL BYT E ARRAY_W DW 50 DUP (?) DATA_SEG ENDS
;以上定义数据段
;-------------------------------------------- --------------------
(6) MOV SP, SS:DATA_WORD [BX][SI] (7) MOV [BX][SI], 2
;错,[BX][SI]未指出数据类型
(8) MOV AX, WORD_OP1+WORD_OP2
(9) MOV AX, WORD_OP1-WORD_OP2+100
(10) MOV WORD_OP1, WORD_OP1-WORD_OP2 答:见注释。
MOV MOV MOV 答:见注释。
AX, LENGTH TABLEA BL, LENGT H TABLEB CL, LENGT H TABLEC
;汇编成 MOV AX, 000AH ;汇编成 MOV BL, 000AH ;汇编成 MOV CL, 0001H
4.14 对于下面的数据定义,各条 MOV 指令单独执行后,有关寄存器的内容是什么?

END MAIN_PROC
答:见注释。
4.16 按下面的要求写出程序的框架 (1) 数据段的位置从 0E000H 开始,数据段中定义一个 100 字节的数组,其类型属性既 是字又是字节; (2) 堆栈段从小段开始,段组名为 STACK; (3) 代码段中指定段寄存器,指定主程序从 1000H 开始,给有关段寄存器赋值; (4) 程序结束。 答:程序的框架如下:
4.6 试列出各种方法,使汇编程序把 5150H 存入一个存储器字中(如:DW 5150H)。 答:DW 5150H BYTE_VAR 42H WORD_VAR 00H

汇编语言程序设计 程学先 汇编第2、3,4章作业参考答案

汇编语言程序设计 程学先 汇编第2、3,4章作业参考答案

2.16编写程序段,使(AH)与( AL)中的内容互换。

解1MOV BL,ALMOV AL,AH.MOV AH,BL解2XCHG AH,AL2.17编写程序段,使(BL)中高 4 位与低4 位内容互换。

解1MOV CL,4MOV BH,0SHL BX,CLADD BL,BH解2MOV CL,4ROL BL,CL2.18编写程序段,实现当(DL)是奇数时使(AL)=31H,否则使(AL)=30H。

SHR DL,1MOV AL,0RCL AL,1ADD AL,30H2.20设寄存器AX中存放1234H,BX寄存器中存放 1 ,执行DIV BL 指令后,会发生什么现象?为什么?溢出,商超过8位,在AL中存放不下商。

2.21设DX 寄存器中存放值为0 ,AX中存放1234H,BX中存放 1 ,执行DIV BX 后,是否会出现与 2.20 相同现象?为什么?不会,因为是16位除法,商未超过16位2.22一字数据压栈时堆栈指针如何改变?弹出一字数据时堆栈指针如何改变?压栈时堆栈指针减2;弹出一字数据时堆栈指针加22.23 已知(SP)=2088H,(AX)=1A89H,(BX)=90CDH。

依次执行以下三条指令后,画图说明堆栈中数据情况,及SP、AX、BX中数据。

PUSH AXPUSH BXPOP AX(SP)=2086H,(AX)=90CDH,(BX)=90CDH。

*2.25编写程序段求8!(8的阶乘)。

MOV AX,8MOV BX,7NEXT:DX,0MUL BXDEC BXJNZ NEXT2.27假设(AX)=07EH,变量BUFFER中存放的内容为B5H,求下列各条指令单独执行后的结果。

(1)AND AX,BUFFER 34H(2)XOR AX,BUFFER CBH(3)OR AX,BUFFER 0FFH(4)AND AX,0 0(5)XOR AX,OFFH 81H(6)TEST AX,8000H 相与结果为0时。

汇编语言第3-4章平时练习题

汇编语言第3-4章平时练习题

3.知识点:0403(汇编语言程序格式) *汇编语言源程序经汇编程序汇编后产生的文件的扩展名是(B)。

选项A)MAP选项B)OBJ选项C)ASM选项D)EXE4.知识点:0403(汇编语言程序格式) *汇编语言的什么文件经链接(LINK)后产生可执行文件?(D)选项A)EXE选项B)OBJ选项C)MAP选项D)LST7. 知识点:0401(汇编程序功能) *汇编语言源程序是(A)程序。

选项A)不可直接执行的选项B)经连接后就可直接执行的选项C)经汇编程序汇编后就可执行的选项D)可直接执行的14知识点:0302(程序占有的空间和执行时间) **如果指令的运算结果为0,则(C)标志位为1。

选项A)SF选项B)CF选项C)ZF选项D)OF15知识点:0302(程序占有的空间和执行时间) **如果指令的运算结果中有奇数个1,则(C)标志位为0。

选项A)OF选项B)CF选项C)PF选项D)SF16. 知识点:0301(80x86的寻址方式) *IBM PC机的内存是按(D)是编址的。

选项A)位选项B)双字选项C)字选项D)字节23知识点:0301(80x86的寻址方式80x86的寻址方式) **如果内存的某一单元的物理地址为12345H。

则它的逻辑地址为(C):0345H。

选项A)0120H选项B)12000H选项C)1200H选项D)0012H24知识点:0301(80x86的寻址方式80x86的寻址方式) ***如果一个字变量中存放16个字,该字变量的起始地址为1000H:2000H,则该字变量数据区中的最末一个字单元的物理地址为( D)。

选项A)12020H选项B)12000H选项C)1201FH选项D)1201EH25知识点:0301(80x86的寻址方式80x86的寻址方式) **设22000H、22001H单元分别存放的数据为12H、34H,若要读取22000H字单元中的数据,此时读出的数据是(A)。

汇编语言与接口技术复习要点总结及一些习题

汇编语言与接口技术复习要点总结及一些习题

要点总结第二章微型计算机结构1.8086的段式存储结构段地址+偏移量地址=存储单元的物理地址或者,段寄存器的值*16+偏移地址=存储单元的物理地址2.段寄存器,通用寄存器,指针与变址寄存器,标志寄存器3.寻址方式(1)寻址方式的概念(2)寻址方式的分类(3)各寻址方式中对于寄存器的限制(4)各类寻址方式的格式第三章汇编语言(参照课件)1.汇编语句格式:[标号] 操作符操作数[;注释] 2.标号的概念以及其三个属性3.伪指令:(1)符号定义伪指令:EQU(2)数据定义伪指令:DB,DW(3)段定义伪指令:SEGMENT、ENDS、ASSUME 4、运算符(1)分析算符:SEG,,OFFSET ,SIZE,LENGTH(2)组合算符:PTR5.指令语句与伪指令语句的区别6.数据段、堆栈段、代码段的用途第四章指令及汇编程序设计1.数据传送指令:MOV、PUSH、POP、XCHG、XLAT2.算数运算指令:ADD、ADC、INC、SUB、SBB、DEC、NEG、3.逻辑运算指令:CMP、TEST、OR、AND、NOT、XOR4.移位指令:逻辑左移/右移,算数左移/右移,循环左移/右移,带进位的循环左移/右移;以及移位指令对于CF、OF标志位的影响分支结构程序设计1.无条件转移指令2.有条件的转移指令(教材P102)3.分支程序编写循环结构程序设计1.循环控制指令LOOP、LOOPE/Z、LOOPNE/NZ以及他们的控制条件(对CF、ZF的判断)2.循环程序编写子程序设计1.子程序定义伪指令、调用指令、返回指令2.子程序设计中对于堆栈操作的要求第五章输入与输出中断1.中断向量表、中断向量的概念2.中断向量的修改3.中断的类型:软件中断、可屏蔽硬件中断、非屏蔽硬件中断;以及CPU队可屏蔽硬件中断和非屏蔽硬件中断的不同的响应条件4.8259的基本结构和工作原理5.8259的操作命令字:包括各个命令字的作用、格式、具体的操作6.软件中断与硬件中断的异同点第六章8254程序设计1.8254的基本结构和工作原理2.8254的命令字格式,以及对于8254各个计数器工作方式的设定8255程序设计1.8255的基本结构和工作原理2.8255的命令字格式,以及对于8255各端口的操作16550异步串行通信中,波特率的概念,数据帧的概念第七章简单外设LED的显示原理键盘的结构及扫描原理一些复习题习题一一、选择题1、8086CPU中程序计数器IP中存放的是。

微机原理与接口技术 第4章课后作业答案

微机原理与接口技术 第4章课后作业答案

解:即当从输入接口03F8H读入的数据满足ⅹⅹⅹⅹ1ⅹ1ⅹB时可以从接口03FBH输入 数据。 LEA SI,DATA MOV CX,200 NEXT: MOV DX,03F8H WAIT: IN AL,DX AND AL,0AH ;判断b1和b3位是否同时为1 CMP AL,0AH JNZ WAIT ;b1和b3位同时为1则读数据,否则等待 MOV DX,03FBH IN AL,DX MOV [SI],AL INC SI LOOP NEXT HLT 4.12 画图说明下列语句分配的存储空间及初始化的数据值。 (1)DATA1 DB ‘BYTE’,12,12H,2 DUP(0,?,3) (2)DATA2 DW 4 DUP(0,1,2),?,-5,256H 解: (1) 存储空间分配情况如图(a)所示。 9 (2) 存储空间分配情况如图(b)所示。
6
4.7执行下列指令后,AX寄存器的内容是多少? TABLE DW 10,20,30,40,50 ENTRY DW 3 . . . MOV BX,OFFSET TABLE ADD BX,ENTRY MOV AX,[BX] 解:(AX)=1E00H 4.8 编写程序段,将STRING1中的最后20个字符移到STRING2中(顺序不变)。 解:首先确定STRING1中字符串的长度,因为字符串的定义要求以‘$’符号结尾, 可通过检测‘$’符确定出字符串的长度,设串长度为COUNT,则程序如下: LEA SI,STRING1 LEA DI,STRING2 ADD SI,COUNT-20 MOV CX,20偏移地址送寄存器SI,之后送SI的内容与DI的内容相加并将结果 送DI.指令执行后,(SI)=0017H;(DI)=(DI)+0017H. 4.3 试编写求两个无符号双子长数之和的程序. 两数分别在MEM1和MEM2单元中,和放 在SUM单元. 解: DSEG SEGMENT MEM1 DW 1122H,3344H MEM2 DW 5566H,7788H SUM DW 2 DUP(?) DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG START: MOV AX,DSEG MOV DS,AX LEA BX,MEM1 LEA SI,MEM2 LEA DI,SUM MOV CL,2 CLC AGAIN: MOV AX,[BX] 2
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.伪指令语句与硬指令语句的本质区别是什么?伪指令语句有什么主要作用?
答:区别:伪指令语句是能执行的语句,硬指令语句是CPU可以执行的语句。

伪指令语句主要作用是为汇编程序提供解释说明,它仅仅是在汇编过程中告诉汇编程序如果进行汇编。

2.什么是标识符?汇编程序中标识符怎样组成?
答:是用户自己定义的符号名。

在汇编程序中标识符有两种:标号标识符,用在指令语句中,后面跟冒号,表示程序入口的逻辑地址。

符号(或名字)标识符,用在伪指令语句中,后面不跟冒号,通常是定义一个变量,或说明变量类型。

标识符一般不超31个字符,数字及常规符号($、@、?等)不能打头,也不能使用保留字。

标识不区分大小写。

4.汇编语句有哪两种,每个语句有哪4部分组成?
答:指令语句(又称执行语句)和伪指令语句(又称说明性语句)。

指令语句4部分包括,①标号:、②硬指令助记符、③操作数、④;注释。

伪指令语句4部分包括,①符号名、②伪指令助记符、③参数、④;注释。

5.汇编程序开发有哪4个步骤?分别利用什么程序完成,产生什么输出文件?
答:①编辑。

使用文本编辑器。

产生汇编源程序文件: 文件名.ASM。

源文件是文本文件。

②汇编。

使用汇编程序,如MASM或ML,排除程序中的语法错误。

产生目标文件:文件名.OBJ。

目标文件是二进制文件,是不能执行的文件。

③连接。

使用LINK。

产生可执行文件:文件名.EXE.
④调试。

使用DEBUG。

本身不产生文件,是对连接产生的可执行进行调试,排除程序中的算法错误,保证可执行文件的正确性。

7.假设MYWORD是一个字变量,MYBYTE1和MYBYTE2是两个字节变量,指出下列语句中的错误原因。

(1) MOV BYTE PTR[BX], 1000
答:数据类型不匹配,目的地址单元是字节单元,1000大于255。

无法存放。

(2) MOV BX, OFFSET[SI]
答:OFFSET后只能跟标识符。

(3) CMP MYBYTE1, MYBYTE2
答:CMP的两个操作数不能同时在存储器中。

(4) MOV AL, MYBYTE1+MYBYTE2
答:运算符只能对常数进行操作,不能对变量进行操作。

(5) SUB AL, MYWORD
答:数据类型不匹配,AL是8位的,MYWORD是16位变量。

(6) JNZ MYWORD
答:MYWORD是变量,其指的单元中存放的是操作数,不能用做跳转入口。

8.OPRL是个常数,请问下列语句中两个AND操作有什么不同?
AND AL, OPRL AND 0FEH
答:第一个AND是指令语句,在程序运行时才执行,第二个AND是逻辑运算符,
是在汇编时就对两个常量完成的关系运算。

相关文档
最新文档