77范文网 - 专业文章范例文档资料分享平台

第四章答案

来源:网络收集 时间:2020-04-15 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

4-1 假设下列指令中的所有标识符均为类型属性为字的变量,请指出下列指令中哪些是非法的?它们的错

误是什么?

(1)MOV BP,AL ;非法,操作数类型不同 (2)MOV WORD_OP[BX+4*3][DI],SP ;合法

(3)MOV WORD_OP1,WORD_OP2 ;非法,不允许两个内存单元直接传递数据 (4)MOV AX,WORD_OP1[DX] ;合法 (5)MOV SAVE_WORD,DS ;合法 (6)MOV SP,SS:DATA_WORD[BX][SI] ;合法 (7)MOV [BX][SI],2 ;非法,必须有一个寄存器

(8)MOV AX,WORD_OP1+WORD_OP2 ;非法,两个内存单元地址相加没有意义 (9)MOV AX,WORD_OP1-WORD_OP2+100 ;合法

(10)MOV WORD_OP1,WORD_OP1-WORD_OP2 ;非法,不允许两个内存单元直接传递数据 4-2 画图说明下列语句所分配的存储空间及初始化的数据值.

(1)BYTE_VAR DB 'BYTE',12,-12H,3 DUP(0,?,DUP(1,2),?) (2)WORD_VAR DW 5 DUP(0,1,2),?,-5,'BY','TE',256H

4-3 试列出各种方法,使汇编程序把5150H存入一个存储器字中(例如:DW 5150H).

(1)DW 5150H (2)MOV AX,5150H MOV ADDRESS,AX 等,写出几个就可以

4-4 假设程序中的数据定义如下:

PARTNO DW ? PNAME DB 16 DUP(?) COUNT DD ?

PLENTH EQU $-PARTNO

问PLENTH的值为多少?它表示什么意义? [解]:PLENTH 的值为22,GE表示该数据段的长度

4-5 试写出一个完整的数据段DATA_SEG,它把整数5赋予一个字节,并把整数-1,0,2,5和4放在10字数组DATA_LIST的头5个单元中.然后,写出完整的代码段,其功能为:把DATA_LIST中头5个数中的最大值和最

1

小值分别存入MAX和MIN单元中. [解]:源程序如下. DATA_SEG SEGMENT DB 5

DATA_LIST DW 0FFFFH,0,2,5,4, 5 DUP (?) MAX DW ? MIN DW ? DATA_SEG ENDS CODE_SEG SEGMENT

ASSUME CS:CODE_SEG,DS:DATA_SEG START:

MOV AX,DATA_SEG MOV DS,AX MOV AX,5 MOV MAX,AX MOV AX,0FFFFH MOV MIN,AX CODE_SEG ENDS END START

4-6 对于下面的数据定义,三条MOV指令分别汇编成什么?(可用立即数方式表示) TABLEA DW 10 DUP(?) TABLEB DB 10 DUP(?) TABLEC DB '1234' ......

MOV AX,LENGTH TABLEA MOV BL,LENGTH TABLEB MOV CL,LENGTH TABLEC [解]:分别汇编成为: MOV AX,0AH MOV BL,0AH MOV CL,1

4-7 对于下面的数据定义,各条MOV指令单独执行后,有关寄存器的内容是什么? FLDB DB ?

TABLEA DW 20 DUP(?) TABLEB DB 'ABCD'

(1)MOV AX,TYPE FLDB ;(AX)=1 (2)MOV AX,TYPE TABLEA ;(AX)=2 (3)MOV CX,LENGTH TABLEA ;(CX)=14H (4)MOV DX,SIZE TABLEA ;(DX)=28H (5)MOV CX,LENGTH TABLEB ;(CX)=1] 4-8 按下面的要求写出程序的框架.

(1)数据段的位置从0E000H开始,数据段中定义一个100字节的数组,其类型属性既是字又是字节; (2)堆栈段从小段开始,段组名为STACK;

(3)代码段中指定段寄存器,指定主程序从1000H开始,给有关段寄存器赋值;

2

(4)程序结束. [解]:程序框架如下. DATA_SEG SEGMENT ORG 0E000H

FIRST_TYPE EQU THIS WORD DATA_GROUP DB 100 DUP(?) DATA_SEG ENDS STACK_SEG SEGMENT ALIGN 16

STACK DB 100 DUP (?)

STACK_SEG ENDS ; CODE_SEG SEGMENT

ASSUME CS:CODE_SEG ,DS:DATA_SEG ,SS:STACK_SEG ORG 1000H START:

MOV AX,DATA_SEG MOV DS,AX

MOV AX,STACK_SEG MOV SS,AX .......

CODE_SEG ENDS END START

4-9 请说明表示程序结束的伪操作和结束程序执行的语句之间的差别.它们在源程序中应如何表示? [解]:表示程序结束的伪操作是由系统所执行,并且在操作系统的控制下自动完成,

如:MOV AX,4C00H INT 21H等;而结束程序执行的语句除了以上这些以外,还可以是其它非正常终止的指令,如HALT,EXIT等.

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

BEGIN: MOV AH, 1 INT 21H CMP AL, ‘a’ JB STOP CMP AL,’z’ JA STOP SUB AL, 20H MOV DL, AL MOV AH, 2 INT 21H JMP BEGIN STOP: RET

4-11 试编写一个程序,要求能从键盘接收一个个位数,然后响铃N次(响铃的ASCII码为07)。 BEGIN: MOV AH, 1 INT 21H AND AL, 0FH CBW

3

MOV CX, AX JCXZ EXIT BELL: MOV DL, 07 MOV AH, 02 INT 21H LOOP BELL EXIT: RET

4-12 编制一个汇编语言程序,求出首地址为DATA的100D字数组中的最小偶数,并把它放在AX中。 此题根据题意要求应该使用完整汇编格式,因为精简格式也使用DATA.... dataare segment

DATA DW 3322H,4555H,200H,3544H,1245H num DB ($-DATA)/2 dataare ends code segment

assume cs:code,ds:dataare MAIN PROC FAR start: push ds mov ax,0H push ax mov ax,dataare mov ds,ax

mov dx,0H ;偶数数量计数 mov cx,Word ptr [num] mov si,0H isO:

mov bx,WORD PTR DATA[si] shr bx,1H jnc addDX jmp commonControl 的二进制数。

addDX: ADD dx,1H cmp dx,1H je firstAXValue compare:

mov bx,WORD PTR DATA[si] cmp bx,ax jge commonControl mov ax,bx commonControl: ADD si,2H loop isO jmp exit firstAXvalue:

mov ax,WORD PTR DATA[si] jmp compare exit: ret MAIN ENDP code ends END start

4-13 试编写一个汇编语言程序,要求从键盘上接受一个四位的16进制数,并在终端上显示出于与它等值

STACK SEGMENT PARA STACK 'STACK'

DW 100 DUP(0);初始化堆栈大小为100 STACK ENDS DATE SEGMENT

TRAN DB 0DH,0AH,'The transformed binary is:',0DH,0AH,'$' DATE ENDS CODE SEGMENT

ASSUME CS:CODE, DS:DATE, SS:STACK MOV AX,DATE MOV DS,AX

MAIN PROC FAR ;主程序入口

MOV BX,0 MOV CH,4 MOV CL,4 INPUT: SHL BX,CL MOV AH,01H INT 21H

CMP AL,39H; 大于9则转移 JA AF AND AL,0FH JMP BINARY AF: AND AL,0FH ADD AL,09H

4

BINARY: OR BL,AL DEC CH LEA DX,TRAN

MOV AH,9

INT 21H; 显示字符串 DISPB: MOV CX,10H; 显示二进制数 DISP: MOV DL,0 ROL BX,1 RCL DL,1 ADD DL,30H

MOV AH,2 INT 21H MOV AH,1

INT 21H INT 21H

MOV AH,4CH;程序结束, RET MAIN ENDP

CODE ENDS END MAIN

JNZ INPUT; 转换完成 LOOP DISP

4-14 在STRING到STRING+99单元中存放着一个字符串,是编制一个程序,测试改字符串中是否存在数字,如果有数字则把DL的第5位置1,否则将该位置0。 DSEG SEGMENT STRING DB 100 DUP(?) DSEG ENDS CSEG SEGMENT MAIN PROC FAR

ASSUME CS : CSEG, DS : DSEG, ES :DSEG START : PUSH DS SUB AX, AX PUSH AX MOV AX, DSEG MOV DS, AX MOV ES, AX

BEGIN : MOV CX, 100 MOV SI, 0

REPEAT : MOV AL, STRING[SI] CMP AL, 30H JB GOON CMP AL, 39H JA GOON OR DL, 20H JMP EXIT GOON : INC SI LOOP REPEAT AND DL, 0DFH EXIT : RET MAIN ENDP CSEG ENDS END START

4-15 编程序把AX中的16进制数转换成ASCII码,依次存放到MEM数组中的四个单元中。例如,当AX=2A49H时,程序执行完后,MEM开始的四个单元内容为39H,34H,41H,32H。 DATA SEGMENT SOURCE DW 2A49H MEM DB 4 DUP(?) DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:

MOV AX,DATA MOV DS,AX MOV DX,SOURCE

LEA BX,MEM ;set the loop MOV CX,4 ;the loop body LB: MOV AX,DX AND AX,000FH CMP AL,10

JC AD ADD AL,7 AD: ADD AL,30H MOV [BX],AL INC BX SHR DX,1 SHR DX,1 SHR DX,1 SHR DX,1

LOOP LB ;the loop end, return to dos

MOV AH,4CH INT 21H CODE ENDS END START

5

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库第四章答案在线全文阅读。

第四章答案.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/jiaoyu/959592.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: