1.编写一个在显示器上显示一个笑脸字符的程序
看这段程序的结构,可以看出,每个代码段,带有segment的必须用ASSUME 来进行段分配。
PROG1 SEGMENT;PROG1段的开始ASSUME CS:PROG1;PROG1(自己命名的,叫啥都可以)段对应代码段必须有段分配这步START:MOV DL,1;将要显示的字符的的ASCII码值放到DL中MOV AH,02H;功能号02H调用,写2,02 02H都行,显示单个字符int 21H ;DOS功能号调用匹配的中断20H为程序结束中断,可返回DOS操作。MOV AH,4CH;DOS程序终止,为DOS功能号,AL通常设置为0INT 21H;因为调用了DOS 功能,所以要用INT 21HPROG1 ENDS;段结束END START
对于start的问题。
Start只是一个标号,可以改名字。
表示程序的开始 end start 就是结束,
也有的用main的
2.通过人机对话,从键盘输入一个10进制数字(0~9),查表求键入数字的平方值,存入AL寄存器中,并显示有关的提示信息。试编写汇编语言程序
有点不明白 0DH,0AH,‘$’的作用:
这是把dos系统里的换行(0dh),回车(0ah)组成一个字符串,利用21h,-09h输出字符串功能,在屏幕上输出换行的作法
DATAS SEGMENTTABLE DB 0,1,4,9,16,25,36,49,64,81;数字0~9的平方值BUF DB 'please input a number(0~9):',0DH,0AH,'$';提示信息DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX;设置DXMOV DX,OFFSET BUF;设置DX,使字符串首地址=DS:DXMOV AH,9H;显示以$结尾的字符串INT 21HMOV AH,01H;等待输入字符INT 21HAND AL,0FH MOV BX,OFFSET TABLE;BX指向表头地址TABLEMOV AH,0;AX高位字节清零ADD BX,AX;表头地址+键入数字AL,结果存入BXMOV AL,[BX];查表求得平方值MOV AH,4CHINT 21HCODES ENDSEND START