鱼C论坛

 找回密码
 立即注册
查看: 4134|回复: 5

[技术交流] 设一个32位有符号数存放在DX:AX中,请写一个求其补码的程序片段。

[复制链接]
发表于 2016-12-15 12:39:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 兰陵月 于 2016-12-15 12:41 编辑
  1. ;程序名:TT322.ASM
  2. ;功  能:设一个32位有符号数存放在DX:AX中,请写一个求其补码的程序片段
  3. ASSUME        CS:CSEG,DS:DSEG
  4. ;数据段
  5. DSEG                SEGMENT       
  6.         DIWEI          DW                321EH
  7.         GAOWEI          DW                0CD20H
  8.         MESSAGE1          DB                "THE NUMBER'S COMPLEMENT IS CD20321EH","$"
  9.         MESSAGE2          DB                "THE NUMBER'S COMPLEMENT IS NEW","$"
  10. DSEG                ENDS
  11. ;代码段
  12. CSEG                SEGMENT
  13.         START:                MOV                AX,DSEG
  14.                                 MOV                DS,AX                               
  15.                                 MOV                DX,GAOWEI
  16.                                 MOV                AX,DIWEI                               
  17.                                 TEST        DH,10000000B
  18.                                 JZ                OK1
  19.                                 JNZ                OK2                               
  20.         OK2:                        XOR                DX,7FFFH
  21.                                 XOR                AX,0FFFFH
  22.                                 MOV                GAOWEI,DX
  23.                                 ADD                AX,1
  24.                                 MOV                DIWEI,AX
  25.                                 MOV                AX,GAOWEI
  26.                                 ADC                AX,0
  27.                                 MOV                GAOWEI,AX                               
  28.                                 MOV                DX,OFFSET MESSAGE2
  29.                                 MOV                AH,9
  30.                                 INT                21H                               
  31.                                 JMP                OK       
  32.         OK1:                        MOV                DX,OFFSET MESSAGE1
  33.                                 MOV                AH,9
  34.                                 INT                21H
  35.                                 JMP                OK                               
  36.         OK:                        MOV                AX,4C00H
  37.                                 INT                21H
  38. CSEG                ENDS
  39.                 END                START
复制代码

请问这个答案是否有错误,或者可以做更多优化。和大家交流~谢谢~

我已经经过调试,结果没有错误~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-15 13:01:12 | 显示全部楼层
那些个显示的9号中断,请忽略,我是为了测试用的~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-15 13:02:03 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-15 17:18:49 | 显示全部楼层
  1. ;程序名:TT322.ASM
  2. ;功  能:设一个32位有符号数存放在DX:AX中,请写一个求其补码的程序片段
  3. ASSUME CS:CSEG, DS:DSEG
  4. ;数据段
  5. DSEG SEGMENT        
  6.         DIWEI DW 0001H
  7.         GAOWEI DW 8000H
  8.         MESSAGE1 DB "THE NUMBER'S COMPLEMENT IS CD20321EH","$"
  9.         MESSAGE2 DB "THE NUMBER'S COMPLEMENT IS NEW","$"
  10. DSEG ENDS
  11. ;代码段
  12. CSEG SEGMENT
  13. START:
  14.         MOV AX, DSEG
  15.         MOV DS, AX                                
  16.         MOV DX, GAOWEI
  17.         MOV AX, DIWEI
  18.        
  19.         TEST DH, 10000000B
  20.         JNZ NOK
  21.        
  22.         MOV DX, OFFSET MESSAGE1
  23.         MOV AH, 9
  24.         INT 21H
  25.        
  26.         MOV AX, 4C00H
  27.         INT 21H
  28.        
  29. NOK:       
  30.         not dx
  31.         not ax
  32.         or dx, 10000000B
  33.         add ax, 1
  34.         adc dx, 0
  35.         MOV GAOWEI, DX
  36.         MOV DIWEI, AX              
  37.        
  38.         MOV DX, OFFSET MESSAGE2
  39.         MOV AH, 9
  40.         INT 21H                                      
  41.                               
  42.         MOV AX, 4C00H
  43.         INT 21H
  44. CSEG ENDS
  45. END START
复制代码

评分

参与人数 1荣誉 +3 鱼币 +5 收起 理由
~风介~ + 3 + 5 支持楼主!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-12-16 11:12:06 | 显示全部楼层

你这个答案是书上的标准答案,我因为对NOT指令的不熟悉,所以没选择NOT指令,选用XOR来进行操作~

结果经过调试,都是正确的~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-16 12:47:29 | 显示全部楼层
兰陵月 发表于 2016-12-16 11:12
你这个答案是书上的标准答案,我因为对NOT指令的不熟悉,所以没选择NOT指令,选用XOR来进行操作~

结果 ...

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-6 20:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表