全球旧事资料 分类
数子程序CHANGEPROCNEARPUSHAXPUSHBXPUSHCXPUSHDXMOVXORLOPCMOVCMPJEJMPIS0CLCRCLJMPIS1STCRCLEXTCHINCDX1把CF置一,循环左移BXDX1把CF清零,然后循环左移,可得到二进制序列EXTCHCX16总共16bitBXBXALCHARBX依次取出每个bitAL30HIS0是零的处理IS1是一的处理AX
LOOPLOPC把16bit输入处理完MOVPOPPOPPOPPOPRETCHANGEENDP获取一次输入字符串缓冲子程序GETINPROCNEARPUSHAXTMPDX保存转换后的二进制数DXCXBXAX
第47页
f微机原理软件实验报告
PUSHDXPUSHDIMOVMOVINTPOPPOPPOPRETGETINENDP显示二进制序列的子程序,把二进制数转换为0、1字符串输出DISP2PROCNEARPUSHCXMOVCX16HERESHLBX1二进制数左移到CFJNCISZERO判断CF是0还是1,分别打印之DXOFFSETBUFFAH0AH21HDIDXAX
PRINTONE打印字符一JMPISONEISZEROPRINTZER打印字符零ISONELOOPHEREPRINTTABPOPCXRETDISP2ENDPCODEENDSENDMAIN
第48页
f微机原理软件实验报告三实验分析三实验分析本程序完成了以下主要功能:1读取用户键盘输入二进制数并处理。2修改零号中断处理程序。保护并恢复了原中断向量表。3在中断程序中处理除数为零的情况。4用扩展除法处理除数不为零32位除法溢出,得出正确结果并显示。5用二进制在屏幕显示输出。实验中首先读取用户输入的0、1符号,进行转换,成为二进制数,然后分别测试了无溢出时的处理、有溢出时的处理、除数为零时的处理。如下图为32位除以16位无溢出的测试截图。
如下两图为32位除以16位溢出时触发0号中断,用扩展的32位除法得到正确结果的测试截图。图示分别是80000000H除以00000001H和80000001H除以00000002H。结果正确无误。
下图为除数为0时的测试截图。输出错误提示,并返回DOS。
第49页
f微机原理软件实验报告程序设计的核心思路如下:1通过从键盘读取用户输入,得到32位被除数和16位除数。从字符到二进制数转换的方法是逐位移位判断,然后依据判断结果写CF标志,再用循环移位可将每次得到的二进制位移入16位寄存器保存。2保护和恢复中断向量表。采用的是直接读取的方式,压入堆栈保存,退出程序时将其弹出并直接写入中断向量表。3修改零号中断服务程序。采用直接修改向量表的方式实现。在修改后的中断服务程序中,对除0和非除零溢出分别进行处理。非除零溢出时采用扩展的32位除法得到正确的结果,返回32位商和16位余数。4r
好听全球资料 返回顶部