|
珞珈山水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) 的大作中提到: 】 : 赞下计科院的同学,好热心呀 : 程序解决了, : 啊呀呀,汇编好烦呀 : ................... |
| [返回单文区目录] |
|
|