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

新版汇编语言程序设计习题答案(钱晓捷主编)新版汇编语言程序设计习题答案(钱晓捷主编)第一章汇编语言基础知识1.1、简述计算机系统的硬件组成及各部分作用1.2、明确下列概念或符号:主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB1.3、什么是汇编语言源程序、汇编程序、目标程序?1.4、汇编语言与高级语言相比有什么优缺点?1.5、将下列十六进制数转换为二进制和十进制表示(1)FFH (2)0H (3)5EH (4)EFH(5)2EH (6)10H (7)1FH (8)ABH1.6、将下列十进制数转换为BCD码表示(1)12 (2)24 (3)68 (4)127(5)128 (6)255 (7)1234 (8)24581.7、将下列BCD码转换为十进制数(1)10010001 (2)10001001 (3)00110110 (4)10010000(5)00001000 (6)10010111 (7)10000001 (8)000000101.8、将下列十进制数分别用8位二进制数的原码、反码和补码表示(1)0 (2)-127 (3)127 (4)-57(5)126 (6)-126 (7)-128 (8)681.9、完成下列二进制数的运算(1)1011+1001 (2)1011-1001 (3)1011×1001 (4)10111000÷1001(5)1011 ∧~1011 (8)1011 ⊕ 1001 1001(6)1011 ∨1001(7)1.10 数码0~9、大写字母A~Z、小写字母a~z对应的ASCII码分别是多少?ASCII码为0dh、0ah对应的是什么字符?1.11、计算机中有一个“01100001”编码,如果把它认为是无符号数,它是10进制什么数?如果认为它是BCD码,则表示什么数?又如果它是某个ASCII码,则代表哪个字符?1.12、简述Intel 80x86系列微处理器在指令集方面的发展。
32位汇编语言习题及答案(全部)(钱晓捷版)

简答题1.1 简答题-1 (1)哪个处理器的指令系统成为Intel 80x86系列处 哪个处理器的指令系统成为Intel 80x86系列处 理器的基本指令集? 理器的基本指令集? • 8086 什么是通用寄存器? (3)什么是通用寄存器? • 一般指处理器最常使用的整数寄存器,可用于保存 一般指处理器最常使用的整数寄存器, 整数数据、 整数数据、地址等 最高有效位MSB是指哪一位? MSB是指哪一位 (6)最高有效位MSB是指哪一位? • 数据的最高位,例如对8、16、32位数据,MSB依次 数据的最高位,例如对8 16、32位数据 MSB依次 位数据, 指D7、D15和D31位
DS是数据段寄存器名 DS是数据段寄存器名 6364b 6364b是数字开头 @data是汇编语言使用预定义符号 是汇编语言使用预定义符号, @data是汇编语言使用预定义符号,表示数据段地址 flat是表示平展存储模型的关键字 flat是表示平展存储模型的关键字
10
习题解答
习题1.16 习题1.16
32位汇编语言习题解答 32位汇编语言习题解答
课件制作: 课件制作: 钱晓捷
钱晓捷,32位汇编语言程序设计,机械工业出版社 钱晓捷,32位汇编语言程序设计, 位汇编语言程序设计
第1章习题:汇编语言基础 章习题:
简答题( 1.1 简答题(1、3、6、7、8) 判断题( 1.2 判断题(1、6、7、8、9) 填空题 10) 1.3 填空题(3、4、5、7、10) 13、 15、 1.9、1.13、1.15、1.16
3
习题解答
简答题1.1 简答题-2 (7)汇编语言中的标识符与高级语言的变量和常量名 的组成原则有本质的区别吗? 的组成原则有本质的区别吗? • 没有 汇编语言的标识符大小写不敏感意味着什么? (8)汇编语言的标识符大小写不敏感意味着什么? • 表示字母大小写不同、但表示同一个符号 表示字母大小写不同、
第四版钱晓捷课后习题答案

第四版钱晓捷课后习题答案第四版钱晓捷课后习题答案《微机原理与接口技术》习题解答第1章微型计算机系统 (2)第2章处理器结构 (14)第3章数据处理 (29)第4章汇编语言程序设计 (52)第5章微机总线 (82)第6章存储系统 (96)第7章输入输出接口 (115)第8章常用接口技术 (137)第9章处理器性能提高技术 (160)第10章并行处理技术 (172)第1章微型计算机系统〔习题1.1〕简答题(1)计算机字长(Word)指的是什么?(2)总线信号分成哪三组信号?(3)PC机主存采用DRAM组成还是SRAM 组成?(4)Cache是什么意思?(5)ROM-BIOS是什么?(6)中断是什么?(7)32位PC机主板的芯片组是什么?(8)教材中MASM是指什么?(9)处理器的“取指-译码-执行周期”是指什么?(10)本课程的主要内容属于计算机系统层次结构中哪个层次?〔解答〕①处理器每个单位时间可以处理的二进制数据位数称计算机字长。
②总线信号分成三组,分别是数据总线、地址总线和控制总线。
③PC机主存采用DRAM组成。
-2-④高速缓冲存储器Cache是处理器与主存之间速度很快但容量较小的存储器。
⑤ROM-BIOS是“基本输入输出系统”,操作系统通过对BIOS的调用驱动各硬件设备,用户也可以在应用程序中调用BIOS中的许多功能。
⑥中断是CPU正常执行程序的流程被某种原因打断、并暂时停止,转向执行事先安排好的一段处理程序,待该处理程序结束后仍返回被中断的指令继续执行的过程。
⑦主板芯片组是主板的核心部件,它提供主板上的关键逻辑电路。
⑧MASM是微软开发的宏汇编程序。
⑨指令的处理过程。
处理器的“取指—译码—执行周期”是指处理器从主存储器读取指令(简称取指),翻译指令代码的功能(简称译码),然后执行指令所规定的操作(简称执行)的过程。
⑩机器语言层,即指令集结构。
(学生很多认为是:层。
前4章主要涉及汇编语言,但本书还有很多处理器原理等内容)〔习题1.2〕判断题(1)软件与硬件的等价性原理说明软硬件在-3-功能、性能和成本等方面是等价的。
钱晓捷新版汇编语言程序设计习题答案(1-4)

钱晓捷新版汇编语言程序设计习题答案第一章汇编语言基础知识1.17、举例说明CF和OF标志的差异。
溢出标志OF和进位标志CF是两个意义不同的标志进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确;溢出标志表示有符号数运算结果是否超出范围,运算结果已经不正确•例1:3AH + 7CH=B6H无符号数运算:58+124=182,范围内,无进位有符号数运算: 58+124=182 ,范围外,有溢出•例2:AAH + 7CH=(1)26H无符号数运算:170+124=294,范围外,有进位有符号数运算:-86+124=28 ,范围内,无溢出1.20、8086有哪4种逻辑段,各种逻辑段分别是什么用途?(解答)代码段(Code Segment)用来存放程序的指令序列。
处理器利用CS : IP取得下一条要执行的指令•堆栈段(Stack Segment)确定堆栈所在的主存区域。
处理器利用SS : SP操作堆栈中的数据•数据段(Data Segment)存放当前运行程序所用的数据。
处理器利用DS : EA存取数据段中的数据•附加段(Extra Segment)是附加的数据段,也用于数据的保存。
处理器利用ES : EA存取数据段中的数据第二章8086指令系统2.1已知DS = 2000H、BX = 0100H、SI = 0002H,存储单元[20100H] ~ [20103H]依次存放12 34 56 78H,[21200H] ~ [21203H]依次存放2A 4C B7 65H,说明下列每条指令执行完后AX寄存器的内容。
(1) mov ax,1200h ;AX=1200h(2) mov ax,bx ; AX=0100h(3) mov ax,[1200h] ; AX=4C2Ah(4) mov ax,[bx] ; AX=3412h(5) mov ax,[bx+1100h] ; AX=4C2Ah(6) mov ax,[bx+si] ; AX=7856h(7) mov ax,[bx][si+1100h] ; AX=65B7h2.2指出下列指令的错误(1) mov cx,dl 两操作数类型不匹配(2) mov ip,ax IP 指令指针禁止用户访问(3) mov es,1234h 立即数不允许传给段寄存器(4) mov es,ds 段寄存器之间不允许传送(5) mov al,300 两操作数类型不匹配(6) mov [sp],ax 目的操作数应为[ BP ](7) mov ax,bx+di 源操作数应为 [BX+DI](8) mov 20h,ah 立即数不能作目的操作数2.3已知数字0 ~ 9对应的格雷码依次为:18H、34H、05H、06H、09H、0AH、0CH、11H、12H、14H,它存在于以table为首地址(设为200H)的连续区域中。
汇编程序设计钱晓捷(第四版)第2篇课后答案

第2章8086的指令系统〔习题2.1〕已知DS=2000H、BX=0100H、SI=0002H,存储单元[20100H]~[20103H]依次存放12 34 56 78H,[21200H]~[21203H]依次存放2A 4C B7 65H,说明下列每条指令执行完后AX寄存器的内容。
(1)mov ax,1200h(2)mov ax,bx(3)mov ax,[1200h](4)mov ax,[bx](5)mov ax,[bx+1100h](6)mov ax,[bx+si](7)mov ax,[bx][si+1100h]〔解答〕(1)AX=1200H(2)AX=0100H(3)AX=4C2AH ;偏移地址=bx=0100h(4)AX=3412H ;偏移地址=bx=0100h(5)AX=4C2AH ;偏移地址=bx+1100h=1200h(6)AX=7856H ;偏移地址=bx+si=0100h+0002h=0102h(7)AX=65B7H ;偏移地址=bx+si+1100h=0100h+0002h+1100h=1202h〔习题2.2〕指出下列指令的错误(1)mov cx,dl(2)mov ip,ax(3)mov es,1234h(4)mov es,ds(5)mov al,300(6)mov [sp],ax(7)mov ax,bx+di(8)mov 20h,ah〔解答〕(1)两操作数类型不匹配(2)IP指令指针禁止用户访问(3)立即数不允许传给段寄存器(4)段寄存器之间不允许传送(5)两操作数类型不匹配(6)目的操作数应为[ SI ](7)源操作数应为[BX+DI](8)立即数不能作目的操作数〔习题2.3〕已知数字0 ~ 9对应的格雷码依次为:18H、34H、05H、06H、09H、0AH、0CH、11H、12H、14H,它存在于以table为首地址(设为200H)的连续区域中。
请为如下程序段的每条指令加上注释,说明每条指令的功能和执行结果。
新版汇编语言程序设计钱晓捷第3章习题答

第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的内容。
汇编语言程序设计(第二版) 钱晓捷 习题答案

汇编语言程序设计(第二版) 钱晓捷 习题答案第二章(01)2.1(1)AX =1200h(2)AX =0100h(3)AX =4C2Ah(4)AX =3412h(5)AX =4C2Ah(6)AX =7856h7)AX =65B7h ( 2.2(1) 两操作数类型不匹配(2) IP 指令指针禁止用户访问(3) 立即数不允许传给段寄存器(4) 段寄存器之间不允许传送(5) 两操作数类型不匹配(6) 目的操作数应为[ BP ](7) 源操作数应为 [BX+DI](8) 立即数不能作目的操作数2.3lea bx,table ;获取table 的首地址,BX =200Hmov al,8 ;传送欲转换的数字,AL =8xlat ;转换为格雷码,AL =12H2.4堆栈是一种按“先进后出”原则存取数据的存储区域。
堆栈的两种基本操作是压栈和出栈,对应的指令是PUSH 和POP 。
2.5mov ax,8057hpush axmov ax,0f79hpush axpop bx ;bx=0f79hpop [bx] ;DS:[0f79h]=8057h2.6AL=89h CF ZF SF OF PFAL=12h 1 0 0 1 1AL=0afh 0 0 1 0 1AL=0afh 1 0 1 0 1AL=00h 0 1 0 0 1AL=0ffh 0 0 1 0 1AL=00h 0 1 0 0 12.7 W=X+Y+24-Z w w w .k h d a w .c o m 课后答案网2.8(1)ADD DX,BX(2)ADD AL,[BX+SI](3)ADD [BX+0B2H],CX(4)ADD WORD PTR [0520H],3412H(5)ADD AL,0A0H2.9;为了避免与操作数地址混淆,将题中X,Y,Z,V 字操作数改为A,B,C,D mov ax,X ;ax=Aimul Y ;dx,ax = A*B (将操作数看作符号数,以下同) mov cx,axmov bx,dx ;bx,ax <-- dx,ax =A*Bmov ax,Z ;ax = Ccwd ;dx,ax =C (扩展符号后为双字)add cx,axadc bx,dx ;bx,cx <-- bx,cx+dx,ax=A*B+Csub cx,540sbb bx,0 ;bx,cx<-- A*B+C-540mov ax, V ;ax= Dcwd ;dx,ax= D (扩展符号后为双字)sub ax, cxsbb dx, bx ;dx,ax = dx,ax - bx,cx = D-(A*B+C-540)idiv X ;运算结果:[D-(A*B+C-540h)]/A ;ax 存商,dx 存余数2.10;(1)xchg 的操作数不能是立即数(2不能对CS 直接赋值(3)两个操作数不能都是存储单元(4)堆栈的操作数不能是字节量(5)adc 的操作数不能是段寄存器(6)没有确定是字节还是字操作(7)in 不支持超过FFH 的直接寻址(8)out 只能以AL/AX 为源操作数第二章(02)2.11;指令 AX 的值 CF OF SF ZF PF Mov ax,1407h 1470h - - - - - And ax,ax 1470h 0 0 0 0 0 Or ax,ax 1470h 0 0 0 0 0 Xor ax,ax 0 0 0 0 1 1 Not ax 0ffffh - - - - - Test ax,0f0f0h 0ffffh 0 0 1 0 1 注意: 1. mov, not 指令不影响标志位2. 其他逻辑指令使CF=OF=0, 根据结果影响其他标志位。
新版汇编语言程序设计【课后习题答案】 钱晓捷 主编 电子工业出版社

新版汇编语言程序设计【课后习题答案】钞票晓捷主编电子工业出版社第2章8086的指令系统〔全〕第2章8086的指令系统〔习题2.1〕DS=2000H、BX=0100H、SI=0002H,存储单元[20210H]~[20213H]依次存放12345678H,[21200H]~[21203H]依次存放2A4CB765H,讲明以下每条指令执行完后AX存放器的内容。
〔1〕movax,1200h〔2〕movax,bx〔3〕movax,[1200h]〔4〕movax,[bx]〔5〕movax,[bx+1100h]〔6〕movax,[bx+si]〔7〕movax,[bx][si+1100h]〔解答〕〔1〕AX=1200H〔2〕AX=0100H〔3〕AX=4C2AH ;偏移地址=bx=0100h〔4〕AX=3412H ;偏移地址=bx=0100h〔5〕AX=4C2AH ;偏移地址=bx+1100h=1200h〔6〕AX=7856H ;偏移地址=bx+si=0100h+0002h=0102h〔7〕AX=65B7H ;偏移地址=bx+si+1100h=0100h+0002h+1100h=1202h〔习题2.2〕指出以下指令的错误〔1〕movcx,dl〔2〕movip,ax〔3〕moves,1234h〔4〕moves,ds〔5〕moval,300〔6〕mov[sp],ax〔7〕movax,bx+di〔8〕mov20h,ah〔解答〕〔1〕两操作数类型不匹配〔2〕IP指令指针禁止用户访咨询〔3〕立即数不准许传给段存放器〔4〕段存放器之间不准许传送〔5〕两操作数类型不匹配〔6〕目的操作数应为[SI]〔7〕源操作数应为[BX+DI]〔8〕立即数不能作目的操作数〔习题2.3〕数字0~9对应的格雷码依次为:18H、34H、05H、06H、09H、0AH、0CH、11H、12H、14H,它存在于以table为首地址〔设为200H〕的连续区域中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汇编语言程序设计(第二版) 钱晓捷习题答案第二章(01)2.1(1)AX=1200h(2)AX=0100h(3)AX=4C2Ah(4)AX=3412h(5)AX=4C2Ah(6)AX=7856h(7)AX=65B7h2.2(1) 两操作数类型不匹配(2) IP指令指针禁止用户访问(3) 立即数不允许传给段寄存器(4) 段寄存器之间不允许传送(5) 两操作数类型不匹配(6) 目的操作数应为[ BP ](7) 源操作数应为[BX+DI](8) 立即数不能作目的操作数2.3lea bx,table ;获取table的首地址,BX=200Hmov al,8 ;传送欲转换的数字,AL=8xlat ;转换为格雷码,AL=12H2.4堆栈是一种按“先进后出”原则存取数据的存储区域。
堆栈的两种基本操作是压栈和出栈,对应的指令是PUSH和POP。
2.5mov ax,8057hpush axmov ax,0f79hpush axpop bx ;bx=0f79hpop [bx] ;DS:[0f79h]=8057h2.6AL=89h CF ZF SF OF PFAL=12h 1 0 0 1 1AL=0afh 0 0 1 0 1AL=0afh 1 0 1 0 1AL=00h 0 1 0 0 1AL=0ffh 0 0 1 0 1AL=00h 0 1 0 0 12.7 W=X+Y+24-Z2.8(1)ADD DX,BX(2)ADD AL,[BX+SI](3)ADD [BX+0B2H],CX(4)ADD WORD PTR [0520H],3412H(5)ADD AL,0A0H2.9;为了避免与操作数地址混淆,将题中X,Y,Z,V 字操作数改为A,B,C,Dmov ax,X ;ax=Aimul Y ;dx,ax = A*B (将操作数看作符号数,以下同)mov cx,axmov bx,dx ;bx,ax <-- dx,ax =A*Bmov ax,Z ;ax = Ccwd ;dx,ax =C (扩展符号后为双字)add cx,axadc bx,dx ;bx,cx <-- bx,cx+dx,ax=A*B+Csub cx,540sbb bx,0 ;bx,cx<-- A*B+C-540mov ax, V ;ax= Dcwd ;dx,ax= D (扩展符号后为双字)sub ax, cxsbb dx, bx ;dx,ax = dx,ax - bx,cx = D-(A*B+C-540)idiv X ;运算结果:[D-(A*B+C-540h)]/A ;ax存商,dx存余数2.10;(1)xchg的操作数不能是立即数(2不能对CS直接赋值(3)两个操作数不能都是存储单元(4)堆栈的操作数不能是字节量(5)adc的操作数不能是段寄存器(6)没有确定是字节还是字操作(7)in不支持超过FFH的直接寻址(8)out只能以AL/AX为源操作数第二章(02)2. 其他逻辑指令使CF=OF=0, 根据结果影响其他标志位。
第2章(03)1. 左移N次相当于乘于2的N次方,右左移N次相当于除乘于2的N次方。
2. 移位指令根据是否移入“1”到CF,设置CF,根据移位后的结果影响SF,ZF,PF。
根据最高符号位是否改变设置OF,如改变OF=1.3. ‘ u ’表示无定义,‘ - ’表示无影响。
2.13; (1);不考虑进位mov bl,almov cl,3shl al,cladd al,bl ;shl bl,1add al,bl;考虑进位xor ah,ahmov bx,axmov cl,3shl ax,cladd ax,bx ;shl bx,1add ax,bx(2)数字0~9的ASCII码是:30h~39h非压缩BCD码的0~9是:00h~09h方法一:and al,0fh ;实现ASCII到非压缩BCD码的转换or al,30h ;实现非压缩BCD码到ASCII的转换方法二:xor al,30h ;求反D5D4位,其他不变;即高4位为3,则变为0;高4位为0,则变为3mov cl,4again: shr dx,1 ;实现逻辑右移;采用“sar dx,1”,则实现算术右移rcr ax,1dec cljnz again2.14; (1)用sar编写2.20; 8086的条件转移的转移范围:在当前指令地址的+127---- -128之内。
如条件转移的转移范围超出此范围,可在此范围内安排一条无条件转移,再转移到范围外的目标地址。
2.21; (1)JMP Bx ;转移的有效地址EA=BX=1256h(2)JMP tABLE[Bx] ;转移的有效地址EA=[ds:20a1h+1256h]=[232f7]=3280h(3)JMP [Bx][si] ;转移的有效地址EA=[ds:1256h+528fh]=264e5h=2450h2.22; (1) xor ax,1e1ehje equal;AX=1e1eh(异或后为0)(2)test al,10000001bjnz there;AL的D0或D7至少有一位为1(3) cmp cx,64hjb there;CX(无符号数)< 64h2.23;mov cx,0 不循环,因为一进入循环就判cx=0? 如cx=0 就退出循环delay:loop delay2.24; (1)若DX > DI,转到above执行cmp dx,dija above ;=jnbe above(2)若AX > SI,转到greater执行cmp ax,sijg greater ;=jnle greater(3)若CX = 0,转到zero执行cmp cx,0 jcxz zerojz zero(4)若AX-SI产生溢出,转到overflow执行;cmp ax,dijo overflow(5)若SI≤AX,转到less_eq执行;cmp si,axcmp ax,sijle less_eqjge less_eq(6)若DI≤DX,转到below_eq执行。
cmp di,dxcmp dx,dijbe below_eqjae below_eq2.25; 答:将首地址为array得20个字的数组求和,并将结果存入total 单元中。
2.26; (1)mov si,0mov dl,string[si] ;第1个字符送dl寄存器mov si,5mov dh,string[si] ;第6个字符送dh寄存器(2)xor si,si ;si清零mov al,buffer[si] ;第一字节inc simov ah,buffer[si] ;第二字节mov cl,4shl ah,cl ;BCD码移到高半字节or al,ah ;组合成压缩BCD码mov dl,al ;存入dl寄..inc simov al,buffer[si] ;第三字节inc simov ah,buffer[si] ;第四字节mov cl,4shl ah,cl ;BCD码移到高半字节or al,ah ;组合成压缩BCD码mov dh,al ;存入dh寄..(3)test dx,0f000hjz zeromov ax,-1jmp donezero: mov ax,0done: ret(4)lea bx,buffer1lea dx,buffer2mov cx,8 ;8个字节xor si,si ;si=0clc ;CF=0(5)mov ax,0b800hmov ds,ax ;段地址xor si,si ;地址偏移量si=0xor dx,dx ;和的高字dx=0mov cx,99 ;加的次数mov ax,[si] ;第一个数again: inc si ;指向下一个字单元inc siadd ax,[si] ;加下一个数jnc noc ;无进位转inc dx ;有进位dx=dx+1noc: dec cx ;次数-1jnz cx,again ;非0继续加ret(6)mov si,offset stringmov cx,8000h ;32k=2^15=8000hagain: cmp [si],’$’jnz nextmov [si],20h ;if [si]=’$’ [si]<-- ’ ’next: inc siloop again(7)xor si,si ;si<--0mov cx,100 ;循环次数again: dec array[si]dec cxjnz again(8)xor si,si ;si<--0coun: cmp string[si],’$’je doneinc sijmp coundone: ret2..27; (1)使CF=0 :clc ;and ax,ax ;or ax,ax(2)使AX=0 :xor ax,ax ;and ax,0 ;mov ax,0(3)同时使AX=0和CF=0:and ax,0 ;xor ax,ax ;sub ax,ax2.29; 压缩BCD码加法:AX←AX+BX出口参数:AX=BCD码和2.34; okmsg db ‘OK’, ‘$’errmsg db ‘Error ! Overflow !’, ‘$’…mov ax,Xsub ax,Yjo overflowmov dx,offset okmsgjmp nextoverflow: mov dx,errmsgnext: mov ah,9int 21h错误:mov ax,Xsub ax,Yjo overflowmov dx,offset okmsgokmsg db ‘OK’, ‘$’mov dx,errmsg ;错误1:数据定义在代码中mov ah,9int 21hoverflow: errmsg db ‘Error ! Overflow !’, ‘$’mov dx,errmsg ; 错误2:缺少JMP指令mov ah,9int 21h2.37; ;xt237.asm.model small.stack.dataarray db 255db 0array1 db 255 dup('$')array2 db 0dh,0ah,'$'.code.startupmov ah,0ah ; 键盘输入字符串mov dx,offset arrayint 21hmov dx,offset array2 ; 回车换行mov ah,09hint 21hmov bx,offset array1again: mov al,[bx]cmp al,'$'jz donecmp al,'a' ; 小于a和大于z的字符不是小写字母jb nextcmp al,'z'ja nextsub al,20h ; 在a和z之间的字符才是小写字母,转换为大写mov [bx],al ; 保存到原位置next: inc bxjmp againdone: mov dx,offset array1mov ah,09hint 21h.exit 0end第三章(01)3.1; 硬指令:每个硬指令就是一个处理器指令,在CPU执行时产生相应功能;伪指令:伪指令并不产生处理器指令,它通常用于辅助汇编程序对源程序进行汇编。