好文档 - 专业文书写作范文服务资料分享网站

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

天下 分享 时间: 加入收藏 我要投稿 点赞

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 .exit 0 end

2.38、指令对状态标志的作用可以分成多种情况,例如无影响、无定义、按结果影响、特别说明的影响等,你能区别这些情况吗?分别用具体的指令来说明。 2.39、8086指令系统分成哪6个功能组?各组主要包含什么指令,举例说明。 2.40、总结8086指令系统所采用的各种寻址方式,包括一般的数据寻址、外设数据寻址、堆栈数据寻址、串操作数据寻址、转移指令目的地址的寻址等,并举例说明。

第三章汇编语言程序格式

3.1; 硬指令:每个硬指令就是一个处理器指令,在CPU执行时产生相应功能; 伪指令:伪指令并不产生处理器指令,它通常用于辅助汇编程序对源程序进行汇编。 3.2、什么是标识符,汇编程序中标识符怎样组成?

3.3、什么是保留字,汇编语言的保留字有哪些类型,并举例说明。

3.4、汇编语句有哪两种,每个语句由哪4个部分组成?

3.5 汇编语言程序的开发有哪4个步骤,分别利用什么程序完成、产生什么输出文件。

⒈ 编辑 文本编辑程序 汇编语言源程序.asm ⒉ 汇编 汇编程序 目标模块文件.obj ⒊ 连接 连接程序 可执行文件.exe或.com ⒋ 调试 调试程序 应用程序

3.6 将第2章习题2.36采用简化段定义格式编写成一个完整的源程序。 ;xt236.asm 简化段定义格式

.model small ;定义程序的存储模式(小模式) .stack ;定义堆栈段(默认1024个字节) .data ;定义数据段

str1 ab ’Input Number:0~9 : ’,0dh,0ah,’$’ str2 ab ’Error!’,0dh,0ah,’$’ .cade ;定义代码段

.startup ;说明程序的起始点,建立ds,ss的内容。 mov ah,09h ;显示str1字符串 mov dx,offset str1 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

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指令只有相对寻址方式,不支持间接寻址方式 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 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; 变量和标号有什么属性?

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

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

jbnextcmpal,'z'janextsubal,20h;在a和z之间的字符才是小写字母,转换为大写mov[bx],al;保存到原位置next:incbxjmpagaindone:movdx,offsetarray1movah,09hint21h.exit0end<
推荐度:
点击下载文档文档为doc格式
0a80k7c1bk44p5c1cp2i5zpak1cslt00da3
领取福利

微信扫码领取福利

微信扫码分享