西安交大金信工上机实验(汇编).doc

西安交大金信工上机实验(汇编).doc

ID:54768778

大小:26.50 KB

页数:10页

时间:2020-04-21

西安交大金信工上机实验(汇编).doc_第1页
西安交大金信工上机实验(汇编).doc_第2页
西安交大金信工上机实验(汇编).doc_第3页
西安交大金信工上机实验(汇编).doc_第4页
西安交大金信工上机实验(汇编).doc_第5页
资源描述:

《西安交大金信工上机实验(汇编).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、虽然已经过去了,众大师们也拿到了20分,可是我只有10分……留给工友们做参考,也留给下一级学弟学妹们,祈祷他们少受这门课的苦……均DEBUG通过,顺便最后贴上一些其他同学的程序……上机实践3 1、    将十六进制数12345678H转换成字符串“12345678”。 思路:用与运算将12345678H的每一位数分离出来,加30后变成相应数字的ASCII码值,并通过SHR,SHL运算排好顺序,最终转换成字符串“12345678”。 本题使用SS:IP=2000:0200,内存2000:0000~2000:001f。 e2000:01234567

2、8 //在2000:0处输入十六进制数12345678Ha200  //将指令指针调到CS:0200rds2000  //将DS修改为2000,本题用数据存放在内存2000:0处movax,0 //将AX清零movsi,0000   //2000:0000存放原十六进制数12345678Hmovdi,0010   //2000:0010存放转换后的字符串ASCII码movcx,4     //循环4次s:movch,cl(020C)   //循环体开始,标号处IP为020C,先将外层循环次数4存在CH里,因为后面SHR中默认使用CL会造成冲突m

3、oval,[si]   //al的值为12Handal,f0    //进行与运算,将12H转换成10Hmovcl,4    //将10H转换成01H需要右移4位,移动位数大于1时必须用CL存放次数shral,cl     //此时AL=01Haddal,30   //将AL=01H转换成ASCII码31,代表字符“1”,需要加30mov[di],al  //将AL=32存入2000:0010处movah,[si]  //将12H放入AHandah,0f   //对12H进行与运算,变成02Haddah,30  //将AH=02H转换成ASCI

4、I码32,代表字符“2”,需要加30mov[di+1],ah //将AH=32存入2000:0011处adddi,2   //DI加2incsi   //SI加1movcl,ch  //将保存的外层循环次数4次放回CLmovch,0  //将CH清零loop020C  //执行循环,标号处IP为020C 结果: 2、    将字符串“87654321”转换成十六进制数87654321H。 思路:与上一题类似,只是转换顺序变反,首先用与运算获得字符串ASCII码的末位,用SHL,SHR排好顺序,如此进行4次循环即可得到结果。 本题使用SS:IP=

5、2000:0300,内存2000:0020~2000:003f e2000:0020‘87654321’   //内存2000:0020处存放字符串“87654321”a300  //将IP修改为300movax,0  //将AX清零movsi,0020  //2000:0020处为字符串“87654321”movdi,0030  //2000:0030处存放结果movcx,4  //循环次数为4次s:movch,cl(030c)  //循环体开始,标号处IP为0030C,将外层循环次数存在CH里,防止后面用SHL时由于默认使用CL而造成冲突m

6、oval,[si]  //此时AL为字符“8”的ASCII码值andal,0f  //与运算取“8”的ASCII码值的个位,此时AL=08Hmovcl,4  //左移4位,移动位数大于1时必须用CL存放次数shlal,cl  //左移4位后AL=80Hmovah,[si+1]  //此时AH为字符“7”的ASCII码值andah,0f  //与运算取“7”的ASCII码值的个位,此时AH=07Haddal,ah  //AL+AH,此时结果为87H,存放在AL里mov[di],al  //将Al的值存入2000:[di]中incdi  //DI+

7、1addsi,2  //SI+2movcl,ch  //将保存的外层循环次数重新放入CLmovch,0  //将CH清零loop030c  //循环4次 结果:  上机实践4 1、 在DEBUG下,编程将十进制数12345678D转换成十六进制数。 思路:在内存中输入12345678H后,应首先分别将“12”、“34”、“56”、“78”转换成十六进制表示的十进制大小的值,比如将12H转换成0CH,这个过程需要用到第三题中用过的SHR、SHL、AND、OR等指令;然后利用乘法将转换成的十六进制表示乘以不同的十的倍数;最后用加法获得最终结果。但是

8、需要注意的是,一个16为寄存器最多表示十进制大小为65535的数,所以在适当的步骤中要用到DX。 本题使用SS:IP=2000:0400,内存2000

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。