汇编语言,编写普通简单程序要求有
地址偏移量为100H的话,数据太容易给系统修改了,所以我写在偏移量为1000H的地方,你想写在100H的地方的话那你可以自己改一下。(PS:汇编代码太久没写了。。你看下有没有问题。。。。。。有问题的话就说下=。 =!)代码如下:DATASSEGMENTDATASENDSSTACKSSEGMENTdw16dup(0)STACKSENDSCODESSEGMEN ,DS:DATAS,SS:ST ,STACKSmovss,axmovsp,32movax,1000hmovds,ax;将数据写入内存,并进行判断movdi,100hmovbyteptr[di],0incdimovbyteptr[di]...全部
地址偏移量为100H的话,数据太容易给系统修改了,所以我写在偏移量为1000H的地方,你想写在100H的地方的话那你可以自己改一下。(PS:汇编代码太久没写了。。你看下有没有问题。。。。。。有问题的话就说下=。
=!)代码如下:DATASSEGMENTDATASENDSSTACKSSEGMENTdw16dup(0)STACKSENDSCODESSEGMEN ,DS:DATAS,SS:ST ,STACKSmovss,axmovsp,32movax,1000hmovds,ax;将数据写入内存,并进行判断movdi,100hmovbyteptr[di],0incdimovbyteptr[di],0incdimovbyteptr[di],0movcx,100 ,cxsubbx,1movbyteptr[bx],bl;判断数据为0、正数还是负数cmpbl,0jnzNextNonZero1movdi,100hjmpNextWriteNextNonZero1:testbyteptrbl,10000000bjnzNextNonZero2movdi,101hjmpNextWriteNextNonZero2:cmpbl,10000000bjnzNextNonZero3movdi,100hjmpNextWriteNextNonZero3:movdi,102hjmpNextWrite ,[di]incdlmovbyteptr[di],dlloopMyWrite;数据输出movcx,103hmovbx,0MyDisPlay:;每8个值自动换行xorax,axmovax,bxmovdl,8divdlcmpah,0jnzNomalDisplaymovdl,0dhmovah,02hint21hmovdl,0ahint21h;输出内存中的数值Nom ,axmovbyteptral,[bx]callOutPutStringincbxloopMyDisplayMOVAH,4CHINT21H;显示数不大的DOS屏幕输出Out ,dx;输出空格pushaxxorax,axmovdl,20hmovah,02hint21hpopax;将数据当字符输出movdi,0movbl,16xorcx, ,alpushaxincdixorah,ahcmpcx,0jnzMYDIv;数据对齐movbx,dimovcx,3subcx,bxmovdl,30hmovah,02hT 从堆栈中输出数据movcx,dixorax,axmovah,02 ,dxpopdxmovdl,dhadddl,30h;输出字母cmpdl,39hjbeNextComputeadddl,7Ne 。
收起