新版汇编语言程序设计 钱晓捷 第3章 汇编语言程序格式 答案

更新时间:2023-08-02 14:16:22 阅读: 评论:0

第3章 汇编语言程序格式

〔习题3.1〕伪指令语句与硬指令语句的本质区别是什么?伪指令有什么主要作用?
〔解答〕
伪指令语句与硬指令语句的本质区别是能不能产生CPU动作;
伪指令的作用是完成对如存储模式、主存变量、子程序、宏及段定义等很多不产生CPU动作的说明,并在程序执行前由汇编程序完成处理。

〔习题3.2〕什么是标识符,汇编程序中标识符怎样组成?
〔解答〕
为了某种需要,每种程序语言都规定了在程序里如何描述名字,程序语言的名字通常被称为标识符;
汇编语言中的标识符一般最多由31个字母、数字及规定的特殊符号(如-,$,?,@)组成,不能以数字开头。

〔习题3.3〕  什么是保留字,汇编语言的保留字有哪些类型,并举例说明。
〔解答
保留字是在每种语言中规定了有特殊意义和功能的不允许再做其它用处的字符串;汇编语言的保留字主要有硬指令助记、伪指令助记符、运算符、寄存器名以及预定义符号等。汇编语言对大小写不敏感。如定义字节数和字符串的DB就是伪指令助记符。

〔习题3.4〕汇编语句有哪两种,每个语句由哪4个部分组成?
〔解答〕
汇编语句有执行性语句和说明性语句;
执行性语句由标号、硬指令助记符、操作数和注释四部分组成;
说明性语句由名字、伪指令助记符、参数和注释四部分组成

〔习题3.5〕汇编语言程序的开发有哪4个步骤,分别利用什么程序完成、产生什么输出文件。
〔解答〕
  编辑          文本编辑程序      汇编语言源程序.asm
  汇编          汇编程序             目标模块文件.obj
  连接          连接程序            可执行文件.exe或.com
  调试          调试程序              应用程序

〔习题3.6〕将第2章习题2.36采用简化段定义格式编写成一个完整的源程序。
〔解答〕
          ;简化段定义格式
          .model small          ; 定义程序的存储模式(小模式)
          .stack                ; 定义堆栈段(默认1024个字节)
          .data                ; 定义数据段
str1      db 'Input Number:0~9 : ',0dh,0ah,'$' 
str2      db 'Error!',0dh,0ah,'$'
          .cade                ; 定义代码段
          .startup              ; 说明程序的起始点,建立ds,ss的内容。
          mov ah,09h            ; 显示str1字符串
          mov dx,offt str1
          int 21h
getkey:    mov ah,1              ; 调用DOS功能
            int 21h
          cmp  al,'0'
          jb error              ; 小于0,出错处理
          cmp al,'9'
          ja error              ; 大于9,出错处理
          mov ah,02h            ; 调用DOS显示字符功能,显示该数字
          mov dl,al
          int 21h
          .exit 0              ; 终止程序执行,返回DOS
error:    mov ah,09h            ; 出错,调用DOS 功能显示str2字符串
          mov dx,offt str2
          int 21h
          jmp getkey            ; 返回按键古诗两首
          end                  ; 汇编结束

〔习题3.7〕将第2章习题2.37采用完整段定义格式编写成一个完整的源程序。
〔解答〕
 ;xt307.asm
stack      gment
          dw 512 dup(?)
stack      ends
data      gment
array      db 255
          db 0
array1    db 255 dup('$')
array2    db 0dh,0ah,'$'
data      ends
code      gment 'code'
assume cs:code, ds:data, ss:stack
start:    mov ax,data
          mov ds,ax
          mov ah,0ah              ; 键盘输入字符串
电脑锁屏壁纸          mov dx,offt array
          int 21h
          mov dx,offt array2      ; 回车换行
          mov ah,09h
          int 21h
补水效果好的护肤品          mov bx,offt 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,offt array1
          mov ah,09h
          int 21h
          mov ax,4c00h
          int 21h
描写月的古诗code      ends
          end start

〔习题3.8〕区分下列概念:
(1)变量和标号
(2)数值表达式和地址表达式
重庆郊游(3)符号常量和字符串常量
〔解答〕
(1)变量是在程序运行过程中,其值可以被改变的量;标号是由用户自定义的标识符,指向存储单元,表示其存储内容的逻辑地址。
(2)数值表达式一般是由运算符连接的各种常数所构成的表达式,地址表达式是由名字、标号以及利用各种的操作符形成的表达式。
(3)在程序中,为了使常量更便于使用和阅读,经常将一些常量用常量定义语句定义为符号常量,被一对双引号括起来的若干个字符组成的字符序列被称为字符串常量。

〔习题3.9〕假设myword是一个字变量,mybyte1和mybyte2是两个字节变量,指出下列语句中的错误原因。
(1) mov byte ptr [bx],1000
(2) mov bx,offt myword[si]
(3) cmp mybyte1,mybyte2
(4) mov al,mybyte1+mybyte2
(5) sub al,myword
(6) jnz myword项目管理论文
〔解答〕
(1)1000超出了一个字节范围
(2)寄存器的值只有程序执行时才能确定,而offt是汇编过程计算的偏移地址,故无法确定,改为lea bx,myword[si]
(3)两个都是存储单元,指令不允许
(4)变量值只有执行时才确定,汇编过程不能计算
(5)字节量AL与字量myword,类型不匹配
(6)Jcc指令只有相对寻址方式,不支持间接寻址方式

〔习题3.10〕OPR1是一个常量,问下列语句中两个AND操作有什么区别?
      AND AL,OPR1 AND 0feh
〔解答〕
前者为“与”操作硬指令助记符,可汇编成机器代码。
后者为逻辑运算符,在汇编时进行“与”运算,产生具体数值。

〔习题3.11〕给出下列语句中,指令立即数(数值表达式)的值:
(1) mov al,23h AND 45h OR 67h
(2) mov ax,1234h/16+10h
(3) mov ax,NOT(65535 XOR 1234h)
(4) mov al,LOW 1234h OR HIGH 5678h
(5) mov ax,23h SHL 4
(6) mov ax,1234h SHR 6
(7) mov al,’a’ AND (NOT(’a’-’A’))
(8) mov al,’H’ OR 00100000b
(9) mov ax,(76543 LT 32768) XOR 7654h
〔解答〕
注:对于逻辑运算,有关操作数可化为二进制数。
(1)67h
(2)133h
(3)1234h
王者怎么换号登录(4)76h
(5)0234h
(6)0048h
(7)41h
(8)68h
清洗银器妙招(9)7654h

〔习题3.12〕为第2章例题2.54定义变量count、block、dplus和dminus。
〔解答〕
假设block开始的数据块有32个字节数据:16个正数+100 (64h)、16个负数 -48 (0d0h)
分别连续分布:
block    db 16 dup(100),16 dup(-48) ;也可以是任意字节数据,随意分布。
dplus    db 32 dup(?)                    ;为正数预留存储空间

本文发布于:2023-08-02 14:16:22,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1105521.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:语句   定义   常量   指令   汇编   程序   字符串   伪指令
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图