求IBM-PC汇编语言程序设计(第二版)第五章习题答案~

时间:2021-01-08 01:20:52

 谁有答案 或者自己做的答案参考?  6道题目没思路!

11 个解决方案

#1


没有这本书。友情帮顶

#2


引用 1 楼 masmaster 的回复:
没有这本书。友情帮顶


IBM-PC汇编语言程序设计(第二版) 沈美明 温冬婵 编著
  清华大学出版社

 定价:34.80元

#3


我有第一版的,不过题目很多.你方便的话把题目发几个上来

#4



  第五章课后习题



1段英文 ,变量名为ENG,以$结束,查找单词SUN在该文中出现次数,以‘SUN 次数’的格式显示(怎样查找SUN。。。。)
   

  首地址TABLE 数组中按递增次序存放100H个16位补码数,编程把出现次数最多的数及出现的次数放在AX和CX中(递增会重复?)
   
  数据段已经定义N个字节数据数组M,编程求出M中绝对值最大的数把他放在M+2N单元,偏移放在N+1单元(只会找最大的,不会找偏移)
DATA SEGMENT
  M DB -1,2,3,-4,5,6,-7,8 DATA ENDS
data ends
CODE SEGMENT
  ASSUME CS:CODE,DS:DATA,SS:STACK
START:
  MOV AX,DATA
  MOV DS,AX
  LEA BX,M
  S:MOV AL,[BX]
  RCL AL,1
  JC NO
  JMP X
  NO:NEG AL
  ADD AL,1
  MOV [BX],AL
  X: INC BX
  LOOP S
  MOV CX,6
  LEA BX,M
  MOV AL,[BX]
  MOV SI,BX
  INC SI
  D: CMP AL,[SI]  
  JAE TG
  XCHG AL,[SI]
  TG: INC SI
  LOOP D
  LEA BX,M
  SHL si,1
  ADD BX,SI
  MOV [BX],AL
  
  MOV AH,4CH
  INT 21H
CODE ENDS
END START


  数组A包含15个互不相等的整数。B包含20个互不相等的整数 编程,把既在A又在B出现的整数存放在C中(长度不一样不会找)


  从键盘输入一系列字符,以回车结束,并按字母 数字 及其它字符分类计数 最后显示3类计数结果(难道一个一个按照ASCII码的范围比较?)

#5


楼主,我看见你在坛子里的另外一个地方同样的问题

#6


引用 5 楼 abgood 的回复:
楼主,我看见你在坛子里的另外一个地方同样的问题


 穷阿!

#7


原来这本书上的题啊,那我在另一个帖子上说的话就错了...不过这本书上的题我是一题没做,当成参考书来看的...书是好书,知识面广,唯一缺憾是没介绍TSR程序,此书应多看...

#8


引用 7 楼 nanlingcg 的回复:
原来这本书上的题啊,那我在另一个帖子上说的话就错了...不过这本书上的题我是一题没做,当成参考书来看的...书是好书,知识面广,唯一缺憾是没介绍TSR程序,此书应多看...

 是阿 课后习题够我做 2两天的了 还是第五章。  
 我什么时候能达到你那水平就烧高香了
 我想向 破解、病毒分析发展

#9


tsr程序在80x86 ibm pc及兼容计算机上有介绍主要介绍int9,int8的中断改写和驻留
另外,汇编语言课程设计 案例精编也有相关的时钟TSR的程序,中国水利水电出版社

#10


网上不是有答案吗,一搜就出来了,只不过自己得修改一下,自己要把程序看懂

#11


设有一段英文,其字符变量名为ENG,并以$字符结束。试编写一程序,查对单词SUN在该文中的出现次数,并以格式“SUN:xxxx”显示出次数。
答:程序如下:
DSEG SEGMENT
ENG DB ‘Here is sun, sun ,…,$’
DISP DB  ‘SUN:’
DAT DB  ‘0000’ , 0DH, 0AH, ‘$’
KEYWORD DB  ‘sun’
DSEG ENDS
;--------------------------------------------------------------------------
CSEG SEGMENT
MAIN PROC FAR
ASSUME  CS: CSEG, DS: DSEG, ES: DSEG
START: PUSH DS ;设置返回DOS
SUB AX, AX
PUSH AX
MOV AX, DSEG
MOV DS, AX ;给DS赋值
MOV ES, AX ;给ES赋值
BEGIN: MOV AX, 0
MOV DX, DISP-ENG-2 ;计算ENG的长度(每次比较sun,因此比较次数-2)
LEA BX, ENG
COMP: MOV DI, BX
LEA SI, KEYWORD
MOV CX, 3
REPE CMPSB ;串比较
JNZ NOMATCH
INC AX ;是,SUN的个数加1
ADD BX, 2
NOMATCH: INC BX ;指向ENG的下一个字母
DEC DX
JNZ COMP
DONE: MOV CH, 4 ;将次数转换为16进制数的ASCII码
MOV CL, 4
LEA BX, DAT ;转换结果存入DAT单元中
DONE1: ROL AX, CL
MOV DX, AX
AND DL, 0FH ;取一位16进制数
ADD DL, 30H
CMP DL, 39H
JLE STORE
ADD DL, 07H ;是“A~F”所以要加7
STORE: MOV [BX], DL ;转换结果存入DAT单元中
INC BX
DEC CH
JNZ DONE1
DISPLAY: LEA DX, DISP ;显示字符串程序(将DISP和DAT一起显示)
MOV AH, 09H
INT 21H
RET
MAIN ENDP
CSEG ENDS ;以上定义代码段
;--------------------------------------------------------------------------
END START

#1


没有这本书。友情帮顶

#2


引用 1 楼 masmaster 的回复:
没有这本书。友情帮顶


IBM-PC汇编语言程序设计(第二版) 沈美明 温冬婵 编著
  清华大学出版社

 定价:34.80元

#3


我有第一版的,不过题目很多.你方便的话把题目发几个上来

#4



  第五章课后习题



1段英文 ,变量名为ENG,以$结束,查找单词SUN在该文中出现次数,以‘SUN 次数’的格式显示(怎样查找SUN。。。。)
   

  首地址TABLE 数组中按递增次序存放100H个16位补码数,编程把出现次数最多的数及出现的次数放在AX和CX中(递增会重复?)
   
  数据段已经定义N个字节数据数组M,编程求出M中绝对值最大的数把他放在M+2N单元,偏移放在N+1单元(只会找最大的,不会找偏移)
DATA SEGMENT
  M DB -1,2,3,-4,5,6,-7,8 DATA ENDS
data ends
CODE SEGMENT
  ASSUME CS:CODE,DS:DATA,SS:STACK
START:
  MOV AX,DATA
  MOV DS,AX
  LEA BX,M
  S:MOV AL,[BX]
  RCL AL,1
  JC NO
  JMP X
  NO:NEG AL
  ADD AL,1
  MOV [BX],AL
  X: INC BX
  LOOP S
  MOV CX,6
  LEA BX,M
  MOV AL,[BX]
  MOV SI,BX
  INC SI
  D: CMP AL,[SI]  
  JAE TG
  XCHG AL,[SI]
  TG: INC SI
  LOOP D
  LEA BX,M
  SHL si,1
  ADD BX,SI
  MOV [BX],AL
  
  MOV AH,4CH
  INT 21H
CODE ENDS
END START


  数组A包含15个互不相等的整数。B包含20个互不相等的整数 编程,把既在A又在B出现的整数存放在C中(长度不一样不会找)


  从键盘输入一系列字符,以回车结束,并按字母 数字 及其它字符分类计数 最后显示3类计数结果(难道一个一个按照ASCII码的范围比较?)

#5


楼主,我看见你在坛子里的另外一个地方同样的问题

#6


引用 5 楼 abgood 的回复:
楼主,我看见你在坛子里的另外一个地方同样的问题


 穷阿!

#7


原来这本书上的题啊,那我在另一个帖子上说的话就错了...不过这本书上的题我是一题没做,当成参考书来看的...书是好书,知识面广,唯一缺憾是没介绍TSR程序,此书应多看...

#8


引用 7 楼 nanlingcg 的回复:
原来这本书上的题啊,那我在另一个帖子上说的话就错了...不过这本书上的题我是一题没做,当成参考书来看的...书是好书,知识面广,唯一缺憾是没介绍TSR程序,此书应多看...

 是阿 课后习题够我做 2两天的了 还是第五章。  
 我什么时候能达到你那水平就烧高香了
 我想向 破解、病毒分析发展

#9


tsr程序在80x86 ibm pc及兼容计算机上有介绍主要介绍int9,int8的中断改写和驻留
另外,汇编语言课程设计 案例精编也有相关的时钟TSR的程序,中国水利水电出版社

#10


网上不是有答案吗,一搜就出来了,只不过自己得修改一下,自己要把程序看懂

#11


设有一段英文,其字符变量名为ENG,并以$字符结束。试编写一程序,查对单词SUN在该文中的出现次数,并以格式“SUN:xxxx”显示出次数。
答:程序如下:
DSEG SEGMENT
ENG DB ‘Here is sun, sun ,…,$’
DISP DB  ‘SUN:’
DAT DB  ‘0000’ , 0DH, 0AH, ‘$’
KEYWORD DB  ‘sun’
DSEG ENDS
;--------------------------------------------------------------------------
CSEG SEGMENT
MAIN PROC FAR
ASSUME  CS: CSEG, DS: DSEG, ES: DSEG
START: PUSH DS ;设置返回DOS
SUB AX, AX
PUSH AX
MOV AX, DSEG
MOV DS, AX ;给DS赋值
MOV ES, AX ;给ES赋值
BEGIN: MOV AX, 0
MOV DX, DISP-ENG-2 ;计算ENG的长度(每次比较sun,因此比较次数-2)
LEA BX, ENG
COMP: MOV DI, BX
LEA SI, KEYWORD
MOV CX, 3
REPE CMPSB ;串比较
JNZ NOMATCH
INC AX ;是,SUN的个数加1
ADD BX, 2
NOMATCH: INC BX ;指向ENG的下一个字母
DEC DX
JNZ COMP
DONE: MOV CH, 4 ;将次数转换为16进制数的ASCII码
MOV CL, 4
LEA BX, DAT ;转换结果存入DAT单元中
DONE1: ROL AX, CL
MOV DX, AX
AND DL, 0FH ;取一位16进制数
ADD DL, 30H
CMP DL, 39H
JLE STORE
ADD DL, 07H ;是“A~F”所以要加7
STORE: MOV [BX], DL ;转换结果存入DAT单元中
INC BX
DEC CH
JNZ DONE1
DISPLAY: LEA DX, DISP ;显示字符串程序(将DISP和DAT一起显示)
MOV AH, 09H
INT 21H
RET
MAIN ENDP
CSEG ENDS ;以上定义代码段
;--------------------------------------------------------------------------
END START