汇编语言沈美明答案汇编语言第3章答案沈美明
汇编语言清华大学沈美明

8E
MOV AH,4CH
D8
INT 21H
…
COSEG ENDS
…
END START
B4
4C
CD
第四章 汇编语言
213
4.2、伪操作
• 汇编语言源程序由汇编语言语句组成: – 指令语句:也称可执行语句。每条语句都有对应的 目标代码,代表计算机具有的一个基本能力。 – 伪指令语句:用于指示汇编程序如何汇编源程序的 语句。部分语句产生目标代码,部分语句不产生目 标代码。 – 宏指令语句:为提高编程效率而使用的扩展指令。
程序名.asm 程序名.obj 程序名.exe
汇编语言 源程序
目标码 程序
可执行的目 标码程序
编辑程序
汇编程序 连接程序
第四章 汇编语言
2
19
DATA SEGMENT
COSEG SEGMENT
2B
A B
DB DB
25 43
数 据
ASSUME CS:COSEG, DS:DATA,SS:
4C 00
C
DB 76 段 STACK1第章 汇编语言64.2.2、段定义伪操作
1、完整的段定义伪指令 • 语句格式:
段名 SEGMENT [定位类型][组合类型][‘类别名’] 本段语句序列 (指令或数据) 段名 ENDS • 功能:在内存中设置一个逻辑段。 • 定位类型:表示某段装入内存时,对段起始边界的要求。 有四种选择:
– PAGE(页):段从一个“页”的边界开始,256个字节为一页,段 起始地址低8位为0。
• 指令语句与伪指令语句格式: [标识符] 操作符 操作数 [;注释]
– 标识符:任选段。指令语句为标号,以:结束。
• 字符个数为1~31个; • 第一个字符必须是字母、“?”、“@”、或“—”; • 不得使用系统保留字。
IBM-PC汇编语言程序设计课后习题答案(第二版 沈美明))

第五章5.1 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
答:程序段如下:BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用INT 21HCMP AL, ‘a’ ;输入字符<‘a’吗?JB STOPCMP AL, ‘z’ ;输入字符>‘z’吗?JA STOPSUB AL, 20H ;转换为大写字母,用AND AL, 1101 1111B也可MOV DL, AL ;显示一个字符的DOS调用MOV AH, 2INT 21HJMP BEGINSTOP: RET5.2 编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。
答:程序段如下:BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用INT 21HCMP AL, ‘a’ ;输入字符<‘a’吗?JB STOPCMP AL, ‘z’ ;输入字符>‘z’吗?DEC AL ;得到前导字符MOV DL, AL ;准备显示三个字符MOV CX, 3DISPLAY: MOV AH, 2 ;显示一个字符的DOS调用INT 21HINC DLLOOP DISPLAYSTOP: RET5.3 将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别放在AL、BL、CL和DL中。
答:程序段如下:DSEG SEGMENTSTORE DB 4 DUP (?)DSEG ENDS┇BEGIN: MOV CL, 4 ;右移四次MOV CH, 4 ;循环四次LEA BX, STOREA10: MOV DX, AXAND DX, 0FH ;取AX的低四位MOV [BX], DL ;低四位存入STORE中INC BXSHR AX, CL ;右移四次JNZ A10 ;循环四次完了码?B10: MOV DL, STORE ;四组数分别放在AL、BL、CL和DL中MOV CL, STORE+1MOV BL, STORE+2MOV AL, STORE+3STOP: RET5.4 试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示‘MATCH’,若不相同则显示‘NO MATCH’。
汇编语言程序设计(第四版)第3章【课后答案】

汇编语言程序设计第四版【课后习题答案】--囮裑為檤第3章汇编语言程序格式〔习题3.1〕伪指令语句与硬指令语句的本质区别是什么?伪指令有什么主要作用?〔解答〕伪指令语句与硬指令语句的本质区别是能不能产生CPU动作;伪指令的作用是完成对如存储模式、主存变量、子程序、宏及段定义等很多不产生CPU动作的说明,并在程序执行前由汇编程序完成处理。
〔习题3.2〕什么是标识符,汇编程序中标识符怎样组成?〔解答〕为了某种需要,每种程序语言都规定了在程序里如何描述名字,程序语言的名字通常被称为标识符;汇编语言中的标识符一般最多由31个字母、数字及规定的特殊符号(如-,$,?,@)组成,不能以数字开头。
〔习题3.3〕什么是保留字,汇编语言的保留字有哪些类型,并举例说明。
〔解答保留字是在每种语言中规定了有特殊意义和功能的不允许再做其它用处的字符串;汇编语言的保留字主要有硬指令助记、伪指令助记符、运算符、寄存器名以及预定义符号等。
汇编语言对大小写不敏感。
如定义字节数和字符串的DB就是伪指令助记符。
〔习题3.4〕汇编语句有哪两种,每个语句由哪4个部分组成?〔解答〕汇编语句有执行性语句和说明性语句;执行性语句由标号、硬指令助记符、操作数和注释四部分组成;说明性语句由名字、伪指令助记符、参数和注释四部分组成〔习题3.5〕汇编语言程序的开发有哪4个步骤,分别利用什么程序完成、产生什么输出文件。
〔解答〕⒈编辑文本编辑程序汇编语言源程序.asm⒉汇编汇编程序目标模块文件.obj⒊连接连接程序可执行文件.exe或.com⒋调试调试程序应用程序〔习题3.6〕区分下列概念:(1)变量和标号(2)数值表达式和地址表达式(3)符号常量和字符串常量〔解答〕(1)变量是在程序运行过程中,其值可以被改变的量;标号是由用户自定义的标识符,指向存储单元,表示其存储内容的逻辑地址。
(2)数值表达式一般是由运算符连接的各种常数所构成的表达式,地址表达式是由名字、标号以及利用各种的操作符形成的表达式。
8086汇编语言(沈美明 温冬娟版)复习资料(附答案)

汇编语言复习资料第1、2章微处理器的结构和存储器组成1、程序设计语言分哪三类?【机器语言、汇编语言和高级语言】2、二进制数转十进制、十六制数、十进制数转二进制数、十六制数转十进数。
3、十进制数的压缩和非压缩BCD码表示方法。
4、计算机显示、打印字符的编码一般采用什么码。
【ASCⅡ码】5、8086微处理器的功能结构分哪两大部件。
【总线接口单元BIU和执行单元EU;BIU负责与存储器接口,EU部分负责指令的执行。
】6、8086有哪些通用寄存器和段寄存器?哪些可即做8位又可以作16位通用寄存器?哪些在指令中可以装偏移地址?【通用寄存器:八位:AL、AH、BL、BH、CL、CH、DL、DH十六位:AX、BX、CX、DX、DI、SI、SP、BP三十二位:EAX、EBX、ECX、EDX、EDI、ESI、ESP、EBP既可做八位又可作十六位:AX、BX、CX、DX 段寄存器:SS、CS、DS、ES、FS 】7、掌握实模式下的内存分段管理方法。
8、堆栈的基本操作有哪两种,操作原则是什么。
对堆栈完成进出栈操作后,堆栈栈顶指针SP如何改变。
9、微机的总线按功能分为哪三大总线。
【地址总线AB、数据总线DB、控制总线CB 】10、8086微机内存是分段管理的,这样存储器单元的逻辑地址分为哪两个两部分,计算为物理地址公式是什么?【逻辑地址分为段基址和偏移量。
物理地址=10H*段基址+偏移量】11、标志寄存器中有哪些状态标志位和控制标志位,中文名称和符号分别为什么?有什么作用?【状态标志位:(1)辅助进位标志AF 这个标志用于十进制算术运算指令中。
( 2) 进位标志CF 这个标志主要用于多字节数的加、减法运算。
(3)溢出标志OF 多用于算术运算中。
(4) 符号标志SF 它的值与运算结果的最高位相同。
(5) 奇偶标志PF 这个标志可用于检查在数据传送过程中是否发生错误。
(6) 零标志ZF 若运算的结果为0,则ZF=1,否则ZF=0。
汇编语言清华大学沈美明

4.1、汇编语言的功能
汇编语言的建立及汇编过程
• 汇编语言是面向机器结构的低级程序设计语言,是把机 器语言符号化。
• 用汇编语言编的程序称为汇编语言源程序,源程序必须 经过“汇编”,生成目标代码,经过“连接”后生成执 行文件,方可直接运行。
• 汇编语言源程序结构:
• 例1:用汇编语言编写:求解Y=2(A+B)-C的程序
STR1 DB ‘STR,‘G’
STR2 DW ‘ST’,‘RI’,‘G’ STR3 DD ‘ST’, ‘G’
STR1 ‘S’ STR2 ‘T’
‘R’
单元分配原则:
‘G’
1、DB单个字符串最多255个字符,按顺序存放;
2、DW 单个字符串最多2个字符,按高地址存高 字节代码存放;
STR3 ‘T’ ‘S’
– 系统用结束伪指令装入。格式 :END 起始地址
– 通过分支指令修改时装入。如CALL、JMP等。
第四章 汇编语言
10
4.2.3、程序的结束 使用 END
第四章 汇编语言
11
4.2.4、数据定义及存储器的分配伪指令
汇编语言的数据种类: – 常量 – 变量 – 标号
第四章 汇编语言
12
变量:实际为内存单元的数据,并为该存储单元取 名字。其数据可以改变。
第四章 汇编语言
6
4.2.2、段定义伪操作
1、完整的段定义伪指令 • 语句格式:
段名 SEGMENT [定位类型][组合类型][‘类别名’] 本段语句序列 (指令或数据) 段名 ENDS • 功能:在内存中设置一个逻辑段。 • 定位类型:表示某段装入内存时,对段起始边界的要求。 有四种选择:
– PAGE(页):段从一个“页”的边界开始,256个字节为一页,段 起始地址低8位为0。
汇编课后题答案清华大学出版社沈美明版)

第一章. +习题1.1用降幂法和除法将下列十进制数转换为二进制数和十六进制数:(1) 369 (2) 10000 (3) 4095 (4) 32767答:(1) 369=1 0111 0001B=171H(2) 10000=10 0111 0001 0000B=2710H(3) 4095=1111 1111 1111B=FFFH(4) 32767=111 1111 1111 1111B=7FFFH1.2将下列二进制数转换为十六进制数和十进制数:(1) 10 1101 (2) 1000 0000 (3) 1111 1111 1111 1111 (4) 1111 1111答:(1) 10 1101B=2DH=45(2) 1000 0000B=80H=128(3) 1111 1111 1111 1111B=FFFFH=65535(4) 1111 1111B=FFH=2551.3将下列十六进制数转换为二进制数和十进制数:(1) FA (2) 5B (3) FFFE (4) 1234答:(1) FAH=1111 1010B=250(2) 5BH=101 1011B=91(3) FFFEH=1111 1111 1111 1110B=65534(4) 1234H=1 0010 0011 0100B=46601.4完成下列十六进制数的运算,并转换为十进制数进行校核:(1) 3A+B7 (2) 1234+AF (3) ABCD-FE (4) 7AB×6F答:(1) 3A+B7H=F1H=241(2) 1234+AFH=12E3H=4835(3) ABCD-FEH=AACFH=43727(4) 7AB×6FH=35325H=2178931.5下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。
(1) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76 (6) -85-(-76)答:(1) (-85)+76=1010 1011B+0100 1100B=1111 0111B=0F7H;CF=0;OF=0(2) 85+(-76)=0101 0101B+1011 0100B=0000 1001B=09H;CF=1;OF=0(3) 85-76=0101 0101B-0100 1100B=0101 0101B+1011 0100B=0000 1001B=09H;CF=0;OF=00;OF=1(5) (-85)-76=1010 1011B-0100 1100B=1010 1011B+1011 0100B=0101 1111B=5FH;CF=0;OF=10;OF=01.6下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?(1) D8 (2) FF答:(1) D8H表示的带符号数为-40,D8H表示的无符号数为216;(2) FFH表示的带符号数为-1,FFH表示的无符号数为255。
汇编课后题答案(清华大学出版社沈美明版)

汇编课后题答案(清华大学出版社沈美明版)第一章.+习题1.1用降幂法和除法将下列十进制数转换为二进制数和十六进制数:(1) 369 (2) 10000 (3) 4095 (4) 32767答:(1) 369=1 0111 0001B=171H(2) 10000=10 0111 0001 0000B=2710H(3) 4095=1111 1111 1111B=FFFH(4) 32767=111 1111 1111 1111B=7FFFH1.2将下列二进制数转换为十六进制数和十进制数:(1) 10 1101 (2) 1000 0000 (3) 1111 1111 1111 1111 (4) 1111 1111答:(1) 10 1101B=2DH=45(2) 1000 0000B=80H=128(3) 1111 1111 1111 1111B=FFFFH=65535(4) 1111 1111B=FFH=2551.3将下列十六进制数转换为二进制数和十进制数:(1) FA (2) 5B (3) FFFE (4) 1234答:(1) FAH=1111 1010B=250(2) 5BH=101 1011B=91(3) FFFEH=1111 1111 1111 1110B=65534(4) 1234H=1 0010 0011 0100B=46601.4完成下列十六进制数的运算,并转换为十进制数进行校核:(1) 3A+B7 (2) 1234+AF (3) ABCD-FE(4) 7AB×6F答:(1) 3A+B7H=F1H=241(2) 1234+AFH=12E3H=4835(3) ABCD-FEH=AACFH=43727(4) 7AB×6FH=35325H=2178931.5下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。
(1) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76 (6) -85-(-76)答:(1) (-85)+76=1010 1011B+0100 1100B=1111 0111B=0F7H;CF=0;OF=0(2) 85+(-76)=0101 0101B+1011 0100B=00001001B=09H;CF=1;OF=0(3) 85-76=0101 0101B-0100 1100B=01010101B+1011 0100B=0000 1001B=09H;CF=0;OF=0(4) 85-(-76)=0101 0101B-1011 0100B=01010101B+0100 1100B=10100001B=0A1H;CF=0;OF=1(5) (-85)-76=1010 1011B-0100 1100B=10101011B+1011 0100B=0101 1111B=5FH;CF=0;OF=1(6) -85-(-76)=1010 1011B-1011 0100B=10101011B+0100 1100B=11110111B=0F7H;CF=0;OF=01.6下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?(1) D8 (2) FF答:(1) D8H表示的带符号数为-40,D8H表示的无符号数为216;(2) FFH表示的带符号数为-1,FFH表示的无符号数为255。
汇编语言程序设计(第四版)第3章【课后答案】

汇编语言程序设计(第四版)第3章【课后答案】汇编语言程序设计(第四版)第3章【课后答案】汇编语言程序设计第四版【课后习题答案】--囮裑為檤第3章汇编语言程序格式〔习题3.1〕伪指令语句与硬指令语句的本质区别是什么?伪指令有什么主要作用?〔解答〕伪指令语句与硬指令语句的本质区别是能不能产生CPU动作;伪指令的作用是完成对如存储模式、主存变量、子程序、宏及段定义等很多不产生CPU动作的说明,并在程序执行前由汇编程序完成处理。
〔习题3.2〕什么是标识符,汇编程序中标识符怎样组成?〔解答〕为了某种需要,每种程序语言都规定了在程序里如何描述名字,程序语言的名字通常被称为标识符;汇编语言中的标识符一般最多由31个字母、数字及规定的特殊符号(如-,$,?,@)组成,不能以数字开头。
〔习题3.3〕什么是保留字,汇编语言的保留字有哪些类型,并举例说明。
〔解答保留字是在每种语言中规定了有特殊意义和功能的不允许再做其它用处的字符串;汇编语言的保留字主要有硬指令助记、伪指令助记符、运算符、寄存器名以及预定义符号等。
汇编语言对大小写不敏感。
如定义字节数和字符串的DB就是伪指令助记符。
〔习题3.4〕汇编语句有哪两种,每个语句由哪4个部分组成?〔解答〕汇编语句有执行性语句和说明性语句;执行性语句由标号、硬指令助记符、操作数和注释四部分组成;说明性语句由名字、伪指令助记符、参数和注释四部分组成〔习题3.5〕汇编语言程序的开发有哪4个步骤,分别利用什么程序完成、产生什么输出文件。
〔解答〕⒈编辑文本编辑程序汇编语言源程序.asm⒉汇编汇编程序目标模块文件.obj⒊连接连接程序可执行文件.exe或.com⒋调试调试程序应用程序〔习题3.6〕区分下列概念:(1)变量和标号(2)数值表达式和地址表达式(3)符号常量和字符串常量〔解答〕(1)变量是在程序运行过程中,其值可以被改变的量;标号是由用户自定义的标识符,指向存储单元,表示其存储内容的逻辑地址。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汇编语言沈美明答案汇编语言第3章答案沈美明第三章 80X86的指令系统和寻址方式 1、给定(BX )=637DH,(SI )=2A9BH,位移量D=7237H,试确定在以下各种寻址方式下的有效地址是什么答案:(1)立即寻址没有(2)直接寻址 7237H(3)使用BX 的寄存器寻址没有(4)使用BX 的间接寻址 637DH(5)使用BX 的寄存器相对寻址 0D5F0H(6)基址变址寻址 8E18H(7)相对基址变址 004FH2、根据下列要求,写出相应的汇编指令(1)把BX 寄存器和DX 寄存器的内容相加,结果存入DX 寄存器中。
(2)用寄存器BX 和SI 基地址变址寻址方式把存储器中的一个字节与AL 寄存器的内容相加,并把结果送到AL 寄存器中。
(3)用寄存器BX 和位移量0B2H 的寄存器相对寻址方式把存储器中的一个字和(CX )相加,并把结果送回存储器中。
(4)用位移量为0524H 的直接寻址方式把存储器中的一个字与数2A59H 相加,并把结果送回该存储单元中。
(5)把数0B5H 与(AL )相加,并把结果送回AL 中。
答案:(1)ADD DX,BX(2)ADD AL,[BX][SI](3)ADD [BX][0B2H], CX(4)MOV AX,2A59HADD [0524H] ,AX(5)ADD AL ,0B5H3、写出把首地址为BLOCK 的字数组的第6个字送回到DX 寄存器的指令。
要求使用以下几种寻址方式:(1)寄存器间接寻址(2)寄存器相对寻址(3)基址变址寻址答案:(1)寄存器间接寻址MOV BX,OFFSET [BLOCK][0AH]MOV DX ,[BX](2)寄存器相对寻址 MOV SI,OAHMOV DX,[BLOCK][SI] (3)基址变址寻址MOV BX ,BLOCKMOV SI,OAHMOV DX,[BX][SI]4、现有(DS )=2000H,(BX)=0100H,(SI)=0002H,(xx0)=12H,(xx1)=34H,(xx2)=56H, (xx3)=78H,(21200)=2AH,(20201)=4CH,(21202)=B7H,(21203)=65H,试说明下列各条指令执行完后,AX 寄存器的内容。
答案:(1)MOV AX,1200H 1200H(2)MOV AX,BX 0100H(3)MOV AX,[1200] 4C2AH(4)MOV AX,[BX] 3412H(5)MOV AX, 1100[BX] 4C2AH(6)MOV AX,[BX][SI] 7856H(7)MOV AX,1100[BX][SI] 65B7H5、给定(IP )=2BC0H,(CS )=0200H,位移量D=5119H,(BX )=1200H,(DS )=212AH,(224A0)=0600H,(275B9)=098AH,试为以下的转移指令找出转移的偏移地址。
(1)段内直接寻址(2)使用BX 及寄存器间接寻址方式的段内间接寻址(3)使用BX 及寄存器相对寻址方式的段内间接寻址答案:(1)7CD9H (2)1200H (3)6319H7、在0624单元内有一条二字节JMP SHORT OBJ 指令,如其中位移量为(1)27H ,(2)6BH ,(3)0C6H ,试问转向地址OBJ 的值是多少?转向地址OBJ 的值分别为:(1)064DH (2)0691H (3)05E0H 注意有符号数的符号位8、假定(DS )=2000H,(ES )=2100H,(SS )=1500H,(SI )=00A0H,(BX )=0100H,(BP )=0010H,数据段中变量名VAL 的偏移地址值为0050H ,试指出下列源操作数字段的寻址方式是什么?其物理地址值是多少?(1)MOV AX,0ABH (2)MOV AX,BX(3)MOV AX,[100] (4)MOV AX,VAL(5)MOV AX,[BX] (6)MOV AX,ES:[BX](7)MOV AX,[BP] (8)MOV AX,[SI](9)MOV AX,[BX+10] (10)MOV AX,VAL[BX](11)MOV AX,[BX][SI] (12)MOV AX,VAL[BX][SI](1)MOV AX,0ABH 立即数寻址无物理地址(2)MOV AX,BX 寄存器寻址同上(3)MOV AX,[100] 直接寻址 xx0H(4)MOV AX,VAL 直接寻址 xx0H(5)MOV AX,[BX] 寄存器间接寻址 xx0H(6)MOV AX,ES:[BX] 直接寻址 21100H(7)MOV AX,[BP] 寄存器间接寻址 xx0H(8)MOV AX,[SI] 同上 200A0H(9)MOV AX,[BX+10] 寄存器相对寻址 xx0H(10)MOV AX,VAL[BX] 同上 xx0H(11)MOV AX,[BX][SI] 基址变址寻址 201A0H(12)MOV AX,VAL[BX][SI] 相对基相变址寻址 201F0H10、如TABLE 为数据段中0032单元的符号名,其中存放的内容为1234H ,试问以下两条指令有什么区别?指令执行完后AX 寄存器的内容是什么?答案:MOV AX,TABLE 是把符号地址TABLE 里的内容送到AX 里,指令执行完后,(AX)=1234H LEA AX,TABLE 是把符号地址TABLE 的有效地址(这里是偏移量)送到指定寄存器AX 里,指令执行完后,(AX )=0032H11、执行下列指令后,AX 寄存器中的内容是什么?TABLE DW 10,20,30,40,50ENTRY DW 3…MOV BX,OFFSET TABLEADD BX,ENTRYMOV AX,[BX]答案:执行完指令后,(AX )=1E00H15、求出以下各十六进制数与十六进制数62A0之和,并根据结果设置标志位SF ,ZF ,CF ,和OF 的值。
答案:运算结果 SF,ZF,CF,OF各位的值(从左至右依次往下~)(1)74D4H 0 0 0 0(2)A5C1H 1 0 0 1(3)4240H 0 0 1 0(4)0000H 0 1 1 017、写出执行以下计算的指令序列,其中X ,Y ,Z ,R 和W 均为存放16位带符号数单元的地址。
(1) Z ←W+(Z-X )(2) Z ←W-(X+6)-(R+9)(3) Z ←(W*X)/(Y+6),R ←余数(4) Z ←((W-X )/5*Y)*2答案:(1).MOV AX,Z ;把Z 送到AXSUB AX,X ;Z-XADD AX,W ;W+(Z-X)MOV Z,AX ;结果保存在Z 中(2).MOV AX,R ;R 送到AX 中ADD AX,9 ;R+9MOV BX,X ;X 送到BX 中ADD BX,6 ;X+6ADD AX,BX ;(R+9)+(X+6),结果保存在AX 中MOV BX,W ; W送到BX 中SUB BX,AX ; W-(R+9)-(X+6),连续减去两个数,相当于减去这两个数的和~~ MOV Z,BX ;最终结果送到Z 中(3)MOV AX,W ;把W 送到AXIMUL X ;W*X 注意:低十六位保存在AX 里,高十六位保存在DX 里MOV BX,Y ;把Y 送到BX 里ADD BX,6 ;Y+6IDIV BX ;(W*X)/(Y+6) 注意:商保存在AX 里,余数保存在DX 里MOV Z,AX ;把商送到Z 中,MOV R,DX ;把余数送到R 中(4)MOV AX,W ;把W 送到AX 中SUB AX,X ;W-XCWD ;把AX 中的十六位带符号数扩展成为32位,低十六位保存在AX 中,高十六位保;在DX 中MOV BX,5 ;把5送到BX 中IDIV BX ;(W-X )/5 被除数为32位,除数为16位商为16位 IMUL Y ;上一步结果再乖以Y ,积为32位MOV BX,2 ;把2送到BX 中IMUL BX ;上一步乘法所得的积再乘以2,各为64位MOV Z,EAX ;把结果中低32位放入Z 双字单元中MOV [Z+4],EDX ;把结果中高32位放入Z+4双字单元中18、已知程序段如下:MOV AX,1234HMOV CL,4ROL AX,CLDEC AXMOV CX,4MUL CXINT 20H试问:(1)每条指令执行完后,AX 寄存器的内容是什么?(2)每条指令执行完后,进位、符号和零标志的值是什么?(3)程序结束时,AX 和DX 的内容是什么?答案:指令本条指令执行完后AX 的内容执行完后CF,SF,ZF 的值 MOV AX,1234H 1234H 0 0 0MOV CL,4 1234H 0 0 0ROL AX,CL 2341H 1 0 0DEC AX 2340H 1 0 0MOV CX,4 2340H 1 0 0MUL CX 8918H 0 0 0INT 20H程序结束后,(AX )=8918H (DX)=0000H21、写出对存放在DX 和AX 中双字长数求补的指令序列。
答案:NEG DXNEG AXSBB DX,022、试编写一个程序求出双字长数的绝对值。
双字长数在A 和A+2单元中,结果存放在B 和B+2单元中。
答案:MOV AX,A ;把双字長数的低字放到AX 中MOV DX,[A+2] ;把双字長数的高字放到DX 中TEST DX,8000H ;字長数的符号JZ RIGHT ;如果是非负数,则直接保存NEG DX ;如果是负数,则求补NEG AXSBB DX,0RIGHT :MOV B,AXMOV [B+2],DX25、试用移位指令把十进制数+53和-49分别乘以2。
它们应该用什么指令?得到的结果是什么?如果要除以2呢?:(1)把53D 乘以2的程序:MOV AX,35H ;53D=35HSHL AX ,1(2)把53除以2 的程序:MOV AX,35HSHR AX,1其他的同理28、下列程序段执行完后,BX 寄存器中的内容是什么?MOV CL,3MOV BX,0B7HROL BX,1ROR BX,CL答案:该程序段执行完后,BX 寄存器的內容是:C02DH30、编写程序段,把字符串STRING 中的‘&’字符用空格符代替。
STRING DB ‘The data is FEB&03’答案:MOV CX,12H ;把重复次数放到CX 中。
这里用十六進制表示 MOV SI,0 ;初始化SIMOV AX,26H ;把字符的ASCII 值放入AXCHECK : CMP AX,STRING[SI] ;依次查找INC SILOOPNE CHECK ;找到了就退出MOV AX,20H ;把空格符的ASCII 值勤放入AX 中MOV STRING[SI-1],AX ;用空格符代替32、编写一程序段,比较两个5字节的字符串OLDS 和NEWS ,如果OLDS 字符串不同于NEWS 字符串则执行NEW_LESS;否则顺序执行程序。