全文预览

汇编语言入门教程2007

上传者:学习一点 |  格式:pdf  |  页数:13 |  大小:0KB

文档介绍
容将由第二个子程序提供)的内容,以便依序处理4个十六进制数:1.利用CL当计数器,记录寄存器移位的次数。2.将BX的第一个十六进制值移到最右边。利用AND(逻辑“与”运算:对应位都为1时,其结果为1,其余情况为零)把不要的部份清零,得到结果:先将BL值存入AL中,再利用AND以0Fh(00001111)将AL的左边四位清零。由于0到9的ASCII码为30h到39h,而A到F之ASCII码为41h到46h,间断了7h,所以得到结果:若AL之内容小于3Ah,则AL值只加30h,否则AL再加7h。ADD指令会将两个表达式相加,其结果存于左边表达式内。标志寄存器(FlagRegister)是一个单独的十六位寄存器,有9个标志位,某些汇编指令(大部份是涉及比较、算术或逻辑运算的指令)执行时,会将相关标志位置1或清0,常碰到的标志位有零标志(ZF)、符号标志(SF)、溢出标志(OF)和进位标志(CF)。标志位保存了某个指令执行后对它的影响,可用其他相关指令,查出标志的状态,根据状态产生动作。CMP指令很像减法,是将两个表达式的值相减,但寄存器或内存的内容并未改变,只是相对的标志位发生改变而已:若AL值小于3Ah,则正负号标志位会置0,反之则置1。JL指令可解释为:小于就转移到指定位置,大于、等于则向下执行。CMP和JG、JL等条件转移指令一起使用,可以形成程序的分支结构,是写汇编程序常用技巧。第二个模块DECIBIN用来接收键盘打入的十进制数,并将它转换成二进制数放于BX寄存器中,供模块1BINIHEX使用。decibinsegmentassumecs:decibinmovbx,0;BX清零newchar:movah,1;int21h;读一个键盘输入符号入al,并显示subal,30h;al减去30H,结果存于al中,完成ASCII码转二进制码jlexit;小于零则转移cmpal,9d

收藏

分享

举报
下载此文档