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

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

来源:网络收集 时间:2026-03-07
导读: int 21h gtekey: mov ah,1 ;调用BIOS判断按键功能 int 16h jz getkey ;如 zf = 0,无键按下,等待 cmp al,‘0’ ;有键按下,键值与‘0’比较 jb error ;如 cmp al, ‘9 ’ ;有键按下,键值与 ‘9’比较 ja err

int 21h

gtekey: mov ah,1 ;调用BIOS判断按键功能 int 16h

jz getkey ;如 zf = 0,无键按下,等待 cmp al,‘0’ ;有键按下,键值与‘0’比较 jb error ;如 < ‘0’,出错处理

cmp al, ‘9 ’ ;有键按下,键值与 ‘9’比较 ja error ;如 〉‘9’,出错处理

mov ah,02h ;调用DOS显示字符功能,显示该数字 mov dl,al int 21h

.exit 0 ;终止程序执行,返回DOS

error: mov ah,09h ; 出错,调用DOS 功能显示str2字符串 mov dx,offset str2 int 21h

jmp getkey ;等待按键 end ; 汇编结束

3.7、将第2章习题2.37采用完整段定义格式编写成一个完整的源程序。 ;xt307.asm stack segment dw 512 dup(?) stack ends data segment array db 255 db 0

array1 db 255 dup('$') array2 db 0dh,0ah,'$' data ends

code segment 'code'

assume cs:code, ds:data, ss:stack start: mov ax,data mov ds,ax

mov ah,0ah ; 键盘输入字符串 mov dx,offset array int 21h

第 16 页 共 29 页

mov dx,offset array2 ; 回车换行 mov ah,09h int 21h

mov bx,offset array1 again: mov al,[bx] cmp al,'$' jz done

cmp al,'a' ; 小于a和大于z的字符不是小写字母 jb next cmp al,'z' ja next

sub al,20h ; 在a和z之间的字符才是小写字母,转换为大写 mov [bx],al ; 保存到原位置 next: inc bx jmp again

done: mov dx,offset array1 mov ah,09h int 21h mov ax,4c00h int 21h code ends end start

3.8、区分下列概念:

(1)变量和标号 (2)数值表达式和地址表达式 (3)符号常量和字符串常量 3.9; 假设myword是一个字变量,mybyte1和mybyte2是两个字节变量,指出下列语句中的错误原

因。

(1) mov byte ptr [bx],1000 ;1000超出了一个字节范围

(2) mov bx,offset myword[si];寄存器的值只有程序执行时才能确定, ;而offset是汇编过程计算偏移地址,故无法确定 ;可以改为lea bx,myword[si]

(3) cmp mybyte1,mybyte2 ;两个都是存储单元,指令不允许

(4) mov al,mybyte1+mybyte2 ;变量值只有执行时才确定,汇编过程不能计算 (5) sub al,myword ;字节量AL与字量myword,类型不匹配 (6) jnz myword ;Jcc指令只有相对寻址方式,不支持间接寻址方式

第 17 页 共 29 页

3.10 OPR1是一个常量,问下列语句中两个AND操作有什么区别?

AND AL,OPR1 AND 0feh

前者为“与”操作硬指令助记符,可汇编成机器代码。 后者为逻辑运算符,在汇编时进行“与”运算,产生具体数值。 3.11给出下列语句中,指令立即数(数值表达式)的值 注:对于逻辑运算,有关操作数可化为二进制数。 (1)mov al,23h AND 45h OR 67h ; 67h (2)mov ax,1234h/16 + 1Oh ; 133h (3)mov ax,NOT(65535 XOR 1234h) ; 1234h (4)mov al, LOW 1234h OR HIGH 5678h ; 76h (5)mov ax,23h SHL 4 ; 0234h (6)mov ax, 1234h SHR 6 ; 0048h (7)mov al,’a’ AND (NOT(’a’-’A’)) ; 41h (8)mov al,’H’ OR 00100000b ; 68h (9)mov ax,(76543 LT 32768) XOR 7654h ; 7654h 3.12; 为第2章例题2.52定义变量count、block、dplus和dminus。

假设block开始的数据块有32个字节数据:16个正数+100 (64h),16个负数 -48 (0doh) 分别连续分布:

block db 16 dup(100),16 dup(-48) ;也可以是任意字节数据,随意分布。 dplus db 32 dup(?) ;为正数预留存储空间 dminus db 32 dup(?) ;为负数预留存储空间 count equ 32 ;字节数

3.13、为第2章例题2.53定义相应变量,并形成一个完整的汇编语言程序。 3.14、画图说明下列语句分配的存储空间及初始化的数据值:

(1) byte_var DB ’ABC’,10,10h,’EF’,3 DUP(-1,?,3 DUP(4)) (2) word_var DW 10h,-5,’EF’,3 DUP(?) 3.15; 请设置一个数据段mydataseg,按照如下要求定义变量:

(1) my1b为字符串变量:Personal Computer (2) my2b为用十进制数表示的字节变量:20 (3) my3b为用十六进制数表示的字节变量:20 (4) my4b为用二进制数表示的字节变量:20 (5) my5w为20个未赋值的字变量 (6) my6c为100的常量

(7) my7c表示字符串:Personal Computer

第 18 页 共 29 页

mydataseg segment

my1b db ‘Personal Computer’ my2b db 20

my3b db 14h ;20h my4b db 00010100b my5w dw 20 dup(?)

my6c equ 100 ;my6c = 100 my7c equ mydataseg ends

3.16、分析例题3.2的数据段,并上机观察数据的存储形式。

3.17、修改例题3.3,现在用字定义伪指令dw、字串传送指令movsw和字符串显示9号功能调用实现。

3.18; 变量和标号有什么属性?

段地址:表示标号所在代码段的段地址; 偏移地址:表示标号所在代码段的段内偏移地址;

类型:引用该标号时,表示它所在同一个段near类型,还是另外一个段far类型。 3.19; 设在某个程序中有如下片段,请写出每条传送指令执行后寄存器AX的内容: mydata segment ORG lO0h VARW DW l234H,5678H VARB DB 3,4 AGLIN 4 VARD DD 12345678H EVEN BUFF DB 10 DUP(?) MESS DB ’HELLO’

MOV AX, OFFSET VARB + OFFSET MESS ;AX = 4+16H = 1AH MOV AX, TYFE TYPE BUFF+TYPE MESS+TYPE VARD;AX = 1+1+4 = 06H MOV AX,SIZE VARW+SIZE BUFF+SIZE MESS;AX = 4+10+5 = 19 = 13H MOV AX,LENGTH VARW + LENGTH VARD ;AX = 2+1 = 03H MOV AX,LENGTH BUFF + SIZE VARW ;AX = 10+4 =14 = 0EH MOV AX,TYPE BIGIN ;AX = FF02H (近) MOV AX,OFFSET BEGIN ;AX = 1BH

3.20、利用简化段定义格式,必须具有.MODEL语句。MASM定义了哪7种存储模式,TINY和SMALL模式创建什么类型(EXE或COM)程序?设计32位程序应该采用什么模式?

第 19 页 共 29 页

3.21、源程序中如何指明执行的起始点?源程序应该采用哪个DOS功能调用,实现程序返回DOS?

3.22; 在SMALL存储模式下,简化段定义格式的代码段、数据段和堆栈段的缺省段名、定位、组

合以及类别属性分别是什么?

段定义伪指令 段名 定位 组合 类别 组名 .CODE _TEXT WORD PUBLIC ’CODE’ .DATA _DATA WORD PUBLIC ’DATA’ DGROUP .STACK STACK PARA STACK ’STACK’ DGROUP

3.23、如何用指令代码代替.startup和.exit指令,使得例题3.1a能够在MASM 5.x下汇编通过?

3.24、创建一个COM程序完成例题3.1的功能。

3.25; 按下面要求写一个简化段定义格式的源程序 < …… 此处隐藏:2456字,全部文档内容请下载后查看。喜欢就下载吧 ……

新版汇编语言程序设计习题答案(钱晓捷主编)(4).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)