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

汇编语言程序设计答案(5)

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

code segment

assume cs:code,ds:data .386p start:

mov ax,data mov ds,ax mov eax,x add eax,y mov ebx,r imul ebx mov v,eax mov v+4,edx mov dl,al add dl,30h mov ah,2 int 21h mov ah,4ch int 21h code ends end start

5.6数据定义如下:执行下列指令,填写寄存器的值

ARRAY LABEL BYTE DA1 DW 2,9,14,3 DA2 DB 7,‘ABCDEDF’

LEN = $-DA1

MOV AL,ARRAY+2 (AL)=( )H ADD AL,DA2+1 (AL)=( )H MOV AX,DA2-DA1 (AX)=( )H

MOV AX,DA1+1 (AX)=( )H MOV BL,LEN (BL)=( )H

答: MOV AL,ARRAY+2 (AL)=( 09 )H ADD AL,DA2+1 (AL)=( 41 )H MOV AX,DA2-DA1 (AX)=( 0008 )H

MOV AX,DA1+1 (AX)=( 0900 )H MOV BL,LEN (BL)=( 10 )H

5.7 定义数据段,满足如下要求: (1)array为字符串变量:‘inspire a generation!’ (2)data1 为十六进制数:0FEDCBAH (3)data2为二进制数:10101010B。 (4)data3为100个为零的字节变量。

(5)分配500个字的空间待用。 答: data segment

Array db ‘inspire a generation!’ Data1 df 0fedcbah Data2 db 10101010B Data3 db 100 dup(0) dw 500 dup(?) data ends

5.8 假设程序中,数据段定义如下: Data1 db 50 dup(?) Data2 dw 10 dup(0)

Data3 dq 5 dup(2 dup(1,2))

(1)用指令将数据段首地址放入数据段寄存器中。

(2)用一条指令将data2的第一个数据放入BX寄存器中。 (3)将数据段字节数放入CX寄存器。 答:mov ax,data1 mov ds,ax Mov bx,data2[0]

Mov cx, 50+10*2+20*8

5.9现有数据定义如下:

Array1 dw 5 DUP(0)

Array2 EQU BYTE PTR Array1 请说明这两个变量之间的联系。 答:当汇编后,PTR类型操作符使Array2具有Array1相同的段地址和偏移地址,但它的数据类型为字节型。

5.10 给出下列程序段汇编后的结果: Val1 EQU 6 Val2 EQU 3

MOV BX,(Val1 LT 5) AND 20 MOV BX, (VAL2 GE 1) AND 30

MOV BX,(Val2 AND 5) OR (VAL1 GE 5) MOV BX,(Val2 - VAL1) GE 5

答:MOV BX,0 MOV BX,30 MOV BX,FF MOV BX,0

5.11设数据段定义如下: Data segment Org 20h Data1=4

Data2=data1+25h Data3 db ‘123456’ Db 47h,48h Count EQU $-data1

Data4 dw 49h,4Ah,4Bh Data ends

回答下列问题:

(1)Data1的偏移地址是多少? (2)Count的值是多少? 答:(1)0020h (2)0024h

5.12现有一数据区data1,需对其进行按字和按字节访问,请问应如何进行设置?

答:可以利用“LABEL“标签进行设置,如:

Operator_b LABEL byte

Operator_w dw 100dup(0)

其中按字节访问时采用Operator_b变量,按字访问时采用Operator_w变量。

5.13请问什么是PSP,EXE文件和COM文件有何区别?

答:PSP是程序段前缀。程序在执行前调入内存,由DOS确定装入的起始地址,建立PSP,接着再装入程序,其大小为256个字节。EXE文件和COM文件相比,COM文件只有一个段地址,由二进制代码组成,比EXE文件小,并且要求程序从偏移地址0100H单元开始,因为之前存放为PSP。

习题6

6.1 下列程序是在3个数中找出最小的数并放入AL,在括号中填入指令使其完整。

mov al,x mov bl,y

mov cl,z

cmp al,bl ( )

xchg al,bl l1: cmp al, cl

jle l2

( ) l2: ret 答:(1)jl l1 (2)xchg al,cl

6.2 数据段如下:

data segment

da1 db 1,2,‘abcd’ count = $-da1

da2 db 9 dup(?)

data ends

补充括号处的指令,使得程序把DA1数据区数据移到DA2数据区。

mov ax,data

mov ds, ax

mov es,( ) mov cx,( )

mov si, ( ) ( ) ( )

答: mov es,( AX )

mov cx,( COUNT )

mov si, ( OFFSET DA1 ) ( MOV DI, OFFSET DA2 ) ( REP MOVSB )

6.3 将AX和BX进行加、减、乘或除的运算,每种运算由用户从键盘上选择。程序中设置寄存器的值,或在DEBUG下设定寄存器值并在DEBUG下运行程序。 答:code segment

assume cs:code main proc far push ds sub ax,ax push ax mov ah,1 int 21h

cmp al,31h ;1加 jz ad

cmp al,32h ;2减 jz su

cmp al,33h ;3乘

jz mu

cmp al,34h ;4除 jz di ad:ADD AX,BX JMP exit su:SUB AX,BX JMP exit mu:MUL BX JMP exit d:DIV BX exit: ret main endp code ends end main

6.4 编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字母。 答:code segment

assume cs:code main proc far push ds sub ax,ax push ax mov ah,1 int 21h cmp al,61h jb exit cmp al,7ah ja exit

mov bx,ax

sub al,1h ;输出前一字符 mov dl,al mov ah,2 int 21h

mov dl,bl ;输出当前字符 mov ah,2 int 21h

add dl,1h ;输出后一字符 mov ah,2 int 21h

exit:ret main endp code ends

end main

6.5 分别用LOOP循环和条件转移指令实现1+2+3+??+100,并将结果存入AX。 答:(1)code segment assume cs:code main proc far push ds sub ax,ax push ax mov bx,1

mov ax,0

mov cx,99 a:add ax,bx inc bx loop a

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库汇编语言程序设计答案(5)在线全文阅读。

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