资源描述:
《华工微机与接口实验代码及调试过程.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验二数码转码编程及程序调试第一题将ASCII码表示的十进制数转换为二进制数【代码如下】;实验二第一题将ASCII码表示的十进制数转换为二进制数DATASEGMENTDB30DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVSI,3500H;定一源地址MOVDI,3510H;定义目标地址MOVBX,0AH;给BX赋值10便于后面相乘MOVCX,0004H;赋给CX要装换的位数MOVAH,00H;将AH清零MOVAL,[SI]SUBAL,0030HLOOP:MULBXINCSIADDAL,[SI]S
2、UBAL,0030HDECCXJNZLOOP;转换结束跳出循环MOV[DI],AXJMPQUITQUIT:MOVAH,004CHINT21HCODEENDSENDSTART【调试结果】输入3030303135时,输出为0015H输入3030303036时,输出为0006H调试结果证明程序正确2、将从键盘输入的五位十进制数的ASCII码已存在3500起始的内存单元中。把它转换成BCD码后,再按位分别存入350A起始的内存单元内。若输入的不是十进制的ASCII码,则显示FF.【代码如下】;实验二第二小题DATASEGMENTDB30DUP(?)DATAENDS
3、CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVCX,0005H;循环次数设置为5MOVSI,3500H;源地址设置为3500HMOVDI,3510H;目的地址设置为3510HL1:MOVDL,0FFH;给DL赋值0FFH,便于后面输入错误是赋给[DI]值FF,但不能直接给[DI]赋值0FFH,会溢出MOVAL,[SI]CMPAL,0039H;判断大于9则赋值FFJGERRORCMPAL,0030H;判断小于0则赋值FFJBERRORSUBAL,30H;转换为BCD码MOV[DI],BYTEPTRALL2:INCSIINC
4、DIDECCXJNZL1JMPQUITERROR:MOV[DI],DL;赋值FFHJMPL2QUIT:MOVAX,4C00HINT21HCODEENDSENDSTART【调试结果】输入为2334384732时当输入为1234385471时5、BCD码转换为二进制码【代码如下】;第二次试验第五题;BCD码转换为二进制码DATASEGMENTDB30DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVCX,08H;初始化MOVSI,3500HMOVDI,3510HAGAIN:MOVAL,[SI]MOVB
5、L,0AHMULBLINCSIMOVAH,00HMOVDL,[SI]ADDAL,DLMOV[DI],AXINCDIINCSI;此处记得将SI增加1,否则会多4个数字,切记DECCXJNZAGAINJMPQUITQUIT:MOVAX,4C00HINT21HCODEENDSENDSTART【调试结果】2、将十六位二进制数转换为ASCII码表示的十进制数。【代码如下】;第二次试验第三题;十六位二进制数转换为ASCII码表示的十进制数DATASEGMENTDB30DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART
6、:MOVDI,3500HMOVAX,[DI];错误理解二进制存到AX的意思MOVSI,3514HINCSIAGAIN:DECSIMOVDX,0000HMOVBX,000AHDIVBX;此处被除数必须为寄存器ADDDL,30HMOV[SI],DLCMPAX,0H;判断商是否为0,不是就重复,是就比较SI是不是等于3500,是就退出JNZAGAINCMPSI,3500JEQUITAGAIN1:DECSIMOVDL,30HMOV[SI],DLCMPSI,3510HJNZAGAIN1QUIT:MOVAX,004CHINT21HCODEENDSENDSTART【调试
7、结果】2、十六进制数转换为ASCII码【代码如下】;第二次实验第四题;十六进制数转换为ASCII码DATASEGMENTDB30DUP(?)DATAENDSSTACKSEGMENTSTACK'STACK'DB30DUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVCX,0004H;初始化过程MOVSI,3500HMOVDI,3510HMOVDX,[SI]AGAIN:MOVAX,DXANDAX,000FH;小于9则直接装换为ACSSII码CMPAL,09HJLL1ADDAL,37H;大于9则加37J
8、MPL2L1:ADDAL,30HL2:MOV[DI],AL;存储结