珞珈山水BBS武汉大学计算机学院 → 单文区文章阅读

单文区文章阅读 [返回]
发信人: melody722 (囡囡♀wish&bless计科篮球), 信区: C.S
标  题: [合集] 请教计院同学一道汇编题目
发信站: 珞珈山水BBS站 (Mon Apr 30 13:19:29 2007), 站内

☆─────────────────────────────────────☆
  
 pk (fzhang) 于  (Wed Apr 18 19:37:56 2007)  提到:

题目是4位的十进制除法编程,要求人机对话,显示商,余数,
偶写了一个,可是算到255就会溢出,为什么呢?
.386
DATA  SEGMENT     USE16
MESS1 DB    'please enter the dividend:$'
MESS2 DB    0AH,0DH,'please enter the divisor:$'
BUF1  DB    4
      DB    ?
      DB    4 DUP(0)
BUF2  DB    4
      DB    ?
      DB    4 DUP(0)
NUM1  DB    0
NUM2  DB    0
MESS3 DB    0AH,0DH,'the quotient is:'
S     DB    0,0,0,'$'
MESS4 DB    0AH,0DH,'the remainder is:'
Y     DB    0,0,0,'$'
DATA  ENDS
CODE  SEGMENT     USE16
START PROC  FAR
      ASSUME      CS:CODE,DS:DATA
      PUSH  DS
      SUB   AX,AX
      PUSH  AX
      MOV   AX,DATA
      MOV   DS,AX
      
      LEA   DX,MESS1
      MOV   AH,9
      INT   21H
      
      LEA   DX,BUF1
      MOV   AH,10
      INT   21H
      
      MOV   CL,BUF1+1
      MOV   BX,OFFSET BUF1+2
A1:   MOV   AL,0AH
      MUL   NUM1
      MOV   NUM1,AL
      MOV   DL,[BX]
      SUB   DL,30H
      ADD   NUM1,DL
      INC   BX
      LOOP  A1
      
      
      
      
      LEA   DX,MESS2
      MOV   AH,9
      INT   21H
      LEA   DX,BUF2
      MOV   AH,10
      INT   21H
      MOV   CL,BUF2+1
      MOV   BX,OFFSET BUF2+2
A2:   MOV   AL,0AH
      MUL   NUM2
      MOV   NUM2,AL
      MOV   DL,[BX]
      SUB   DL,30H
      ADD   NUM2,DL
      INC   BX
      LOOP  A2
      
      
      MOV   AL,NUM1
      MOV   AH,0
      MOV   BL,NUM2
      DIV   BL
      
      
      MOV   S,AL
      MOV   Y,AH

      MOV   CL,3
      MOV   CH,0
      MOV   BX,OFFSET S-1
      ADD   BX,CX
B1:   MOV   AH,0
      MOV   DL,0AH
      DIV   DL
      ADD   AH,30H
      MOV   [BX],AH
      DEC   BX
      LOOP  B1
      
      
      MOV   CL,3
      MOV   CH,0
      MOV   AL,Y
      MOV   BX,OFFSET Y-1
      ADD   BX,CX
B2:   MOV   AH,0
      MOV   DL,0AH
      DIV   DL
      ADD   AH,30H
      MOV   [BX],AH
      DEC   BX
      LOOP  B2
      LEA   DX,MESS3
      MOV   AH,9
      INT   21H
      LEA   DX,MESS4
      MOV   AH,9
      INT   21H
      RET
START ENDP
CODE  ENDS
      END   START




☆─────────────────────────────────────☆
  
 whysad (成功有成功的原因,失败却没有任何理由) 于  (Wed Apr 18 19:46:09 2007)  提到:

汇编都忘了
不过你应该说的更详细些
怎么是算到255就会溢出?
程序也应该有些简单的注释,特别是你的循环的地方

【 在 pk (fzhang) 的大作中提到: 】
: 题目是4位的十进制除法编程,要求人机对话,显示商,余数,
: 偶写了一个,可是算到255就会溢出,为什么呢?
: .386
: ...................



☆─────────────────────────────────────☆
  
 pk (fzhang) 于  (Wed Apr 18 19:48:43 2007)  提到:


【 在 whysad (成功有成功的原因,失败却没有任何理由) 的大作中提到: 】
: 汇编都忘了
: 不过你应该说的更详细些
: 怎么是算到255就会溢出?
: ...................



先发个思路
偶写注释去

现将十六进制转换成二进制数再将两个二进制数用div指令相除结果是二进制数,再将二进
制数转换成十六进制数,接着输出屏幕


☆─────────────────────────────────────☆
  
 pk (fzhang) 于  (Wed Apr 18 19:49:50 2007)  提到:


【 在 whysad (成功有成功的原因,失败却没有任何理由) 的大作中提到: 】
: 汇编都忘了
: 不过你应该说的更详细些
: 怎么是算到255就会溢出?
: ...................


就是被除数超过255就会出错


☆─────────────────────────────────────☆
  
 coeur (carbohydrate) 于  (Wed Apr 18 19:57:08 2007)  提到:


      MOV   AL,NUM1
      MOV   AH,0
      MOV   BL,NUM2
      DIV   BL

当然不能超过 2^8 了

【 在 pk (fzhang) 的大作中提到: 】
: 就是被除数超过255就会出错




☆─────────────────────────────────────☆
  
 whysad (成功有成功的原因,失败却没有任何理由) 于  (Wed Apr 18 19:57:25 2007)  提到:

你有一条指令
div dl
这是做除法运算吧?
dl是除数吧
DL只能有8位,也就是255,所以除数大于255会溢出
我只稍微看了一点,还得一边看书,忘的太多了。
你改改试试,把被除数放在DX:AX中,除数放BX

【 在 pk (fzhang) 的大作中提到: 】
: 题目是4位的十进制除法编程,要求人机对话,显示商,余数,
: 偶写了一个,可是算到255就会溢出,为什么呢?
: .386
: ...................



☆─────────────────────────────────────☆
  
 pk (fzhang) 于  (Wed Apr 18 20:04:52 2007)  提到:


【 在 coeur (carbohydrate) 的大作中提到: 】
:       MOV   AL,NUM1
:       MOV   AH,0
:       MOV   BL,NUM2
: ...................


是个问题
谢谢


☆─────────────────────────────────────☆
  
 pk (fzhang) 于  (Wed Apr 18 20:05:13 2007)  提到:


【 在 whysad (成功有成功的原因,失败却没有任何理由) 的大作中提到: 】
: 你有一条指令
: div dl
: 这是做除法运算吧?
: ...................


我试试,谢谢


☆─────────────────────────────────────☆
  
 Crimkura (小k) 于  (Wed Apr 18 20:59:21 2007)  提到:

 赞

【 在 whysad (成功有成功的原因,失败却没有任何理由) 的大作中提到: 】
: 你有一条指令
: div dl
: 这是做除法运算吧?
: ...................



☆─────────────────────────────────────☆
  
 pk (fzhang) 于  (Sat Apr 21 00:23:29 2007)  提到:

【 在 coeur (carbohydrate) 的大作中提到: 】
:       MOV   AL,NUM1
:       MOV   AH,0
:       MOV   BL,NUM2
: ...................


赞下计科院的同学,好热心呀
程序解决了,
啊呀呀,汇编好烦呀


☆─────────────────────────────────────☆
  
 dididada (didi) 于  (Sat Apr 21 01:01:40 2007)  提到:

hb
哇,看着简直要挂了

【 在 pk (fzhang) 的大作中提到: 】
: 赞下计科院的同学,好热心呀
: 程序解决了,
: 啊呀呀,汇编好烦呀





☆─────────────────────────────────────☆
  
 lEaFhApPy (两片树叶,双份开心) 于  (Sat Apr 21 11:14:34 2007)  提到:

  这个是生科的同学........

【 在 pk (fzhang) 的大作中提到: 】
: 赞下计科院的同学,好热心呀
: 程序解决了,
: 啊呀呀,汇编好烦呀
: ...................



[返回单文区目录]

武汉大学BBS 珞珈山水站 All rights reserved.
wForum , 页面执行时间:12.964毫秒