汇编语言程序设计(第二版)课后习题答案
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’。
IBM-PC汇编语言 程序设计第2版 答案 甄选

IBM-PC汇编语言程序设计第2版答案(优选.)附录:《IBM—PC汇编语言程序设计》习题参考答案第一章.习题二三四五六七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位二进制补码计算下列各题,并用十六进制数表示其运算结果。
IBM-PC汇编语言程序设计课后习题答案第二版doc

第一章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=0(4) 85-(-76)=0101 0101B-1011 0100B=0101 0101B+0100 1100B=10100001B=0A1H;CF=0;OF=1(5) (-85)-76=1010 1011B-0100 1100B=1010 1011B+1011 0100B=0101 1111B=5FH;CF=0;OF=1(6) -85-(-76)=1010 1011B-1011 0100B=1010 1011B+01001100B=11110111B=0F7H;CF=0;OF=01.6 下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?(1) D8 (2) FF答:(1) D8H表示的带符号数为 -40,D8H表示的无符号数为216;(2) FFH表示的带符号数为 -1, FFH表示的无符号数为255。
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'吗?JA STOPDEC 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 ENDSBEGIN: MOV CL, 4 ;右移四次MOV CH, 4 ;循环四次LEA BX, STOREA10: MOV DX, AXAND DX, 0FH ;取 AX的低四位MOV [BX], DL ;低四位存入 STOREDINC BXSHR AX, CL ;右移四次DEC CHJNZ A10 ;循环四次完了码?B10: MOV DL, STORE ;四组数分别放在 AL、BL、CL和DL中MOV CL, STORE+1MOV BL, STORE+2MOV AL, STORE+3STOP: RET5.4试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示‘ MATC'H,若不相同则显示‘ NO MATC'H。
IBM-PC汇编语言程序设计(第二版)课后习题标准答案(清华大学出版社)解析

IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)解析————————————————————————————————作者:————————————————————————————————日期:IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)(沈美明,温冬蝉著)第二章1.解答:有256个2.解答:如下图.第一个络子为000B0H字单元,注意,是字单元,第五个格子为000B3H字单元E51E3C2A3.解答: 30022H字节单元内容: ABH 30024H字节单元内容: EFH30021H字单元内容: AB34H 30022H字单元内容: CDABH4.解答: 这三个物理地址都是3017AH,说明了不同的段地址和偏移地址对应同一物理地址5.解答: CS+IP 第一个字的物理地址为: 0AAA40H6.解答: 条件标志OF,SF,ZF,CF,的值依次为:0,0,0,07.下列操作可使用那些寄存器?(1)加法和减法AX,BX,CX,DX,当然,还有这几个通用寄存器的高低位了,如AH ,AL等(2)循环计数 CX(3)乘法和除法DX,AX,AH,AL(4)保存段地址CS ,DS,ES,SS(5)表示运算结果为O FLAGS(6)将要执行的指令地址IP(7) 将要从堆栈取出数据的地址BP,SP,SS8.可以用来指示存储器地址的寄存器有:BX,SP,BP,DI,CS,DS,SI,ES,SS,IP9.一一对应;5--A 4--B 2--C 3--D 12--E 9--F 11--G 10--H 13--I 8--J 7--K 6---L 1--M 15--N 14--O第三章1.(1)立即寻址没有(2)直接寻址7237H(3)使用BX的寄存器寻址没有(4)使用BX的间接寻址 637DH(5)使用BX的寄存器相对寻址0D5B4H(6)基址变址寻址8E18H(7)相对基址变址004FH2.根据下列要求,写出相应的汇编指令。
汇编语言程序设计(第二版) 钱晓捷 习题答案

汇编语言程序设计(第二版) 钱晓捷 习题答案第二章(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, 根据结果影响其他标志位。
汇编语言程序设计课后习题答案(第二版_沈美明)(无删减)

汇编语言程序设计课后习题答案(第二版_沈美明)(无删减)第一章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位二进制补码计算下列各题,并用十六进制数表示其运算结果。
[课程]汇编语言程序设计(第二版)课后习题答案
![[课程]汇编语言程序设计(第二版)课后习题答案](https://img.taocdn.com/s3/m/31bb31260812a21614791711cc7931b765ce7ba6.png)
汇编语言程序设计(第二版)课后习题答案IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)(沈美明,温冬蝉著)/down/581895/ak1773--------------------------汇编语言-[基础知识]-[自我总结]2007-03-13 21:06汇编语言计算机存储信息的基本单元是:[一个二进制位]在存储器里以 [字节] 为单位存储信息—————————————————————————会给每个 [字节单元]一个唯一的 [存储器地址]————————————这里的 [存储器地址] 即为:[物理地址]------(书写格式用十六进制表示)[每个字节]==[存储器地址]==[物理地址]==[操作数地址]物理地址(操作数地址)=段基地址*16d + 偏移地址偏移地址==有效地址(EA)EA(effective address)=基址+(变址*比例因子)+位移量立即寻址:MOV AX,0126H..........将0126送入AX -||-没有[物理地址]没有[有效地址]寄存器寻址:MOV AX,BX.............BX的内容传送到AX -||-没有[物理地址]没有[有效地址]寄存器直接寻址:MOV AX,[0126H]........将数据段中的0126单元的内容送AX寄存器间接寻址:MOV AX,[BX]...........BX所指示的地址中的内容送AX--------------------------------第1章答案--------------------------------第2章答案类别:ibm-pc汇编语言程序设计(第二版)课后习题答案 | 评论(47)| 浏览(5203) [首页] [上一页] [1] [2] 3文章分类默认分类(5) 计算机科学技术(14) 文学(2) ibm-pc汇编语言程序设计(第二版)课后习题答案(11) 计算机图形学(5) c++课程设计(2)艺术(6) 广告(1)文章存档2008年04月(1) 2007年09月(1) 2007年06月(4) 2007年04月(5)2007年03月(1) 2007年01月(6) 2006年12月(5) 2006年11月(23)最新文章评论匿名网友不错今天没有白来 sunny841007不管有没有用拿了就先谢谢了匿名网友我说怎么就只有第10章答案而已郁闷啊殇高手,遍得太牛B了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汇编语言程序设计(第二版)课后习题答案第二章1.解答:有256个2.解答:如下图.第一个络子为000B0H字单元,注意,是字单元,第五个格子为000B3H字单元E51E3C2A3.解答:30022H字节单元内容:ABH30024H字节单元内容:EFH30021H字单元内容:AB34H30022H字单元内容:CDABH4.解答:这三个物理地址都是3017AH,说明了不同的段地址和偏移地址对应同一物理地址5.解答:CS+IP第一个字的物理地址为:0AAA40H6.解答:条件标志OF,SF,ZF,CF,的值依次为:0,0,0,07.下列操作可使用那些寄存器?(1)加法和减法AX,BX,CX,DX,当然,还有这几个通用寄存器的高低位了,如AH,AL等(2)循环计数CX(3)乘法和除法DX,AX,AH,AL(4)保存段地址CS,DS,ES,SS(5)表示运算结果为O FLAGS(6)将要执行的指令地址IP(7)将要从堆栈取出数据的地址BP,SP,SS8.可以用来指示存储器地址的寄存器有:BX,SP,BP,DI,CS,DS,SI,ES,SS,IP9.一一对应;5--A4--B2--C3--D12--E9--F11--G10--H13--I8--J7--K6---L1--M15--N14--O第三章1.(1)立即寻址没有(2)直接寻址7237H(3)使用BX的寄存器寻址没有(4)使用BX的间接寻址637DH(5)使用BX的寄存器相对寻址0D5B4H(6)基址变址寻址8E18H(7)相对基址变址004FH2.根据下列要求,写出相应的汇编指令。
(1)ADD DX,BX(2)ADD AL,[BX][SI](3)ADD[BX][0B2H],CX(4)MOV AX,2A59H ADD[0524H],AX(5)ADD AL,0B5H3.(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,(20100)=12H,(20101)=34H,(20102)=56H,(20103)=78H,(2 1200)=2AH,(20201)=4CH,(21202)=B7H,(21203)=65H,试说明下列各条指令执行完后,AX寄存器的内容。
(1)MOV AX,1200H1200H(2)MOV AX,BX0100H(3)MOV AX,[1200]4C2AH注意,是字单元!!(4)MOV AX,[BX]3412H同上(5)MOV1100[BX]4C2AH(6)MOV AX,[BX][SI]7856H(7)MOV AX,1100[BX][SI]65B7H5.(1)7CD9H(2)0600H(3)098AH6.MOV BX,2000HLES DI,[BX]MOV AX,ES:DI7.转向地址OBJ的值分别为:(1)064DH(2)0691H(3)05E0H注意有符号数的符号位8.(1)MOV AX,0ABH立即数寻址无物理地址(2)MOV AX,BX寄存器寻址同上(3)MOV AX,[100]直接寻址20100H(4)MOV AX,VAL直接寻址20050H(5)MOV AX,[BX]寄存器间接寻址20100H(6)MOV AX,ES:[BX]直接寻址21100H(7)MOV AX,[BP]寄存器间接寻址20010H(8)MOV AX,[SI]同上200A0H(9)MOV AX,[BX+10]寄存器相对寻址20110H(10)MOV AX,VAL[BX]同上20150H(11)MOV AX,[BX][SI]基址变址寻址201A0H(12)MOV AX,VAL[BX][SI]相对基相变址寻址201F0H9.(1)的指令:MOV AX,[BX][0CH]MOV ZREO,AX(2)的指令:MOV AX,ARRAY[BX]MOV ZREO,AX10.MOV AX,TABLE是把符号地址TABLE里的内容送到AX里,指令执行完后,(AX)=1234HLEA AX,TABLE是把符号地址TABLE的有效地址(这里是偏移量)送到指定寄存器AX里,指令执行完后,(AX)=0032H11.执行完指令后,(AX)=1E00H12.LEA AX,CSTRINGMOV DL,AXMOV DH,[AX+6]13.课本上P51--P5314.LES BX,[2000]MOV AX,ES:[BX]一条指令的话为MOV AX,ES:[8000H]15.运算结果SF,ZF,CF,OF各位的值(从左至右依次往下)(1)74D4H0000(2)A5C1H1001(3)4240H0010(4)0000H011016.接上表(1)5D140000(2)A8701001(3)D8701000(4)34E4001017.(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.指令本条指令执行完后AX的内容执行完后CF,SF,ZF的值MOVAX,1234H1234H0 00MOVCL,41234H0 00ROLAX,CL2341H1 00DECAX2340H1 00MOVCX,42340H100MULCX8918H0 00INT20H程序结束后,(AX)=8918H(DX)=0000H19.指令执行完后AX的内容执行完后CF,SF,ZF和OF的值MOVAX,000010DECAX FFFFH0 100ADD7FFEH0000ADDAX,28000H0101 NOTAX7FFFH01 01SUB AX,0FFFFH8000H1101 ADD AX,8000H0000H1011 SUB AX,1FFFFH1 101AND AX,58D1H58D1H0000 SAL AX,1B1A2H0101 SAR AX,1D8D1H0100 NEG AX272FH1000 ROR AX,19397H1001 20.(1)MOV AX,DATAXADD DATAY,AX(2)MOV AX,DATAXADD DATAY,AXMOV AX,[DATAX+2]ADD[DATAY+2],AX(3)本組指令的作用是:BX<------[DATAX]+[DATAY]+[1](CF的值)帶進位加法~(4)MOV AX,DATAXMUL DATAY;結果的高十六位保存在DX裏,低十六位保存在AX 裏(5)MOV AX,DATAXMOV DX,[DATAX+2]MUL DWORD DATAY;結果的高三十二位保存在EDX裏,低三十二位保存在EAX裏(6)MOV AX,DATAXDIV17H;結果商保存在AL中,余數在AH中(7)MOV AX,DATAXCDWDIV DATAY21.NEG DXNEG AXSBB DX,022.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],DX23.每條指令單獨執行完後的結果依次為:(1)9AH(2)61H(3)0FBH(4)1CH(5)0(6)0E3H24.執行指令序列後,BX的內容為:0DAH25.(1)把53D乘以2的程序:MOV AX,35H;53D=35HSHL AX,1(2)把53除以2的程序:MOV AX,35HSHR AX,126.這段程序完成的功能是:把DX:AX中的雙字數據左移4位(相當於乘以16D)27.各條指令單獨執行後,DX的值依次為:(1)5CH(2)17H(3)05C8H(4)72H(5)2017H(6)0CDH(7)0172H(8)05CCH(9)0DCH28.該程序段執行完後,BX寄存器的內容是:C02DH29.(1)从左到右把CONMAE中的字符串伟送到PRLINE的程序实现:LEA SI,CONAME;把CONAME中第一个字节的偏移地址送到SI中LEA DI,PRLINE;把PRLINE中第一个字节的偏移地址送到DI中MOV CX,20;把重复次数放到CX里CLD;让SI DI从低地址指向高地址(即从左到右传送)REP MOVSB;传送(2)从右到左把CONMAE中的字符串传送到PRLINE中的程序实现:LEA SI,CONAMELEA DI,PRLINEMOV CX,20STD;和上面唯一不同的就是这次是从右到左,所以要从高地址批向低地址REP MOVSB(3)把CONAME中的第三和第四個字節裝入AX的程序實現:LEA SI,[CONAME+3]LODSW(4)把AX寄存器的內容存入從PRLINE+5開始的字節中的程序實現:LEA DI,[PRLINE+5]STOSW(5)檢查CONAME字符串中有無空格字符,如有把它偉送給BH寄存器的程序實現:LEA DI,CONAME;把CONAME中第一個字符偏移地址放入DI中MOV CX,20;把重複次數放到CX中MOV AL,20H;把空格符的ASCII值放入AL中CLD;從低到高REPNE SCASB;比較MOV BH,[DI-1]R;把檢查到的空格符送到BH中30.MOV CX,12H;把重複次數放到CX中。