教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 互联网资料 >

新版汇编语言程序设计习题答案(钱晓捷主编)(5)

来源:网络收集 时间:2026-03-07
导读: (2) 堆栈段从节边界开始,组合类型为stack; (3) 代码段的类别是?code?,指定段寄存器对应的逻辑段;主程序指定从100h开始,给有关段寄存器赋初值;将数组元素全部设置为64h。 stack segment para ‘stack’ dw

(2) 堆栈段从节边界开始,组合类型为stack;

(3) 代码段的类别是?code?,指定段寄存器对应的逻辑段;主程序指定从100h开始,给有关段寄存器赋初值;将数组元素全部设置为64h。

stack segment para ‘stack’ dw 512 dup(?) stack ends data segment

dword array db 100 dup(?) data ends

code segment ‘code’

assume cs:code,ds:data,es:data,ss:stack org 100h

start: mov ax,data mov ds,ax mov es,ax mov di,offset array mov al,64h mov cx,100 cld rep stosb mov ax,4c00h int 21h code ends end start

3.27; 编制程序完成两个已知双精度数(4字节)A和B相加并将结果存入双精度变量单元SUM

中(不考虑溢出)。

解答 ;xt327.asm .model small

.stack 256 ;定义堆栈段大小为256个字节 .data

anum dd 11223344h ;定义两个双字的数(随意) bnum dd 77553311h

sum dd ? ;定义结果,执行后为:88776655h .code .startup

第 21 页 共 29 页

xor si, si ;相对于变量的位移量清零 mov cx, 2 ;分高低字分别相加,共两次 clc ;清零cf

again:mov ax, anum[si] ;取第一个数的一个字(先低字后高字) adc ax, bnum[si] ;取第二个数的一个字(先低字后高字) mov sum[si], ax ;存和的一个字(先低字后高字) inc si ;修改位移量指向下一个字(加2) inc si

loop again ;cx=cx-1 ,if cx<>0 ,jump again .exit 0 end

3.28 编制程序完成12H、45H、0F3H、6AH、20H、0FEH、90H、0C8H、57H和34H等10个字

节数据之和,并将结果存入字节变量SUM中(不考虑溢出)。

.startup

xor si, si ;位移量清零 mov al, bdata[si] ;取第一个数 mov cx, num-1 ;累加次数 again: inc si ;指向下一个数 adc al, bdata[si] ;累加

loop again ;如未完,继续累加 mov sum, al ;完了,存结果 .exit 0 end

3.29、结构数据类型如何说明、结构变量如何定义、结构字段如何引用?

3.30、记录数据类型如何说明,记录变量如何定义,width和mask操作符是什么作用?

第四章 基本汇编语言程序设计

4.1、例题4.2如果要求算术右移8位,如何修改程序。 4.2、例题4.2如果要求算术左移7位,如何用移位指令实现。

4.3; 思路:设这四组从低位到高位分别放在AL、BL、CL和DL寄存器中。这里仅列出代码段:

mov bl, al ;将al中的两组分开

第 22 页 共 29 页

and al, 0fh ;屏蔽高四位后送al

mov cl, 4 ;原al中的数据逻辑右移4次送bl shr bl, cl

mov dl, ah ;将ah中的两组分开 and dl, 0f0h ;屏蔽低高四位后送dl

mov cl, 4 ;原ah中的数据逻辑右移4次送dl shr dl, cl

mov cl, ah ;屏蔽高四位后送cl and cl, 0fh

4.4; getkey: mov ah, 1 ;从键盘输入,出口:al存键值 int 21h

cmp al, ?a? ;判键值是小写字母? jb getkay cmp al, ?z? ja getkay

sub al,20h ;是小写字母转换为大写字母 mov ah, 09h ;显示 int 21h

4.8; (1) 将jmp table[bx]指令改为:mov dx, table[bx] (2) 去掉源程序中:.exit 0---end之间的语句 4.17; .model small .stack 256 .data

stri1 db ?please input number:1--9?,odh,oah,?$? .code .startup

again: mov dx,offset stri1 ;显示stri1,提示输入 mov ah,09h int 21h

mov ah,01h ;调用输入一个字符 int 21h ;输入一个字符存在al中 cmp al, ?1? ;判该字符,如不在?1?--?9? jb again ;重新输入 cmp al, ?9? ja again

and al,0fh ;在?1?--?9?,屏蔽高4位

第 23 页 共 29 页

mov cx, al ;振铃次数送cx .repeat

mov dl, 07h ;调用一次振铃 mov ah, 02h int 21h

mov dx ,0ffffh ;延时 abc: dec dx jnz abc

.untilcxz ;cx=cx-1,cx=0 退出 .exit 0 end

4.22;crazy PROC ;crazy PROC push ax ;

xor ax,ax ; xor ax,ax xor dx,dx ; xor dx,dx

again: add ax,[bx] ;again: add ax,[bx] adc dx,0 ; adc dx,0 inc bx ; inc bx inc bx ; inc bx loop again ; loop again ret ; ret

ENDP crazy ; crazy ENDP

4.25;子程序中又调用子程序就形成子程序嵌套。 子程序中直接或间接调用该子程序本身就形成子程序递归。 4.26; .model small .stack 256 .data

stdng db ?HeLLO eveRyboDy ! ? , 0 .code .startup

mov bx, offset atring again: mov al, [bx]

call chan ;调用过程 mov [bx] , al next: inc bx jmp again

第 24 页 共 29 页

done: .exit 0

chan proc ;大写转换为小写字母的过程 or al, al jz done cmp al,?A? jb next cmp al, ?Z? ja next or al, 20h ret chan endp end

4.27;astob proc

and dh, 0fh ;十位数的ASCII码转为二进制数 mov al, dh

mul 10 ;al= 10*dh

and dl, 0fh ;个位数的ASCII码转为二进制数 add al, dl ;al= 10*dh + dl ret astob endp

第五章 高级汇编语言程序设计

5.1; cmp X, 5 je abc jmp done abc: cmp ax, bx jne cde jmp done cde: inc ax done:.... 5.2;cmp X, 5 je abc jmp done cmp ax, bx

第 25 页 共 29 页

< …… 此处隐藏:1344字,全部文档内容请下载后查看。喜欢就下载吧 ……

新版汇编语言程序设计习题答案(钱晓捷主编)(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/442426.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)