威海做網(wǎng)站的百度鏈接收錄
1.編寫一個(gè)在顯示器上顯示一個(gè)笑臉字符的程序
看這段程序的結(jié)構(gòu),可以看出,每個(gè)代碼段,帶有segment的必須用ASSUME 來進(jìn)行段分配。
PROG1 SEGMENT;PROG1段的開始ASSUME CS:PROG1;PROG1(自己命名的,叫啥都可以)段對(duì)應(yīng)代碼段必須有段分配這步
START:MOV DL,1;將要顯示的字符的的ASCII碼值放到DL中MOV AH,02H;功能號(hào)02H調(diào)用,寫2,02 02H都行,顯示單個(gè)字符int 21H ;DOS功能號(hào)調(diào)用匹配的中斷 20H為程序結(jié)束中斷,可返回DOS操作。MOV AH,4CH;DOS程序終止,為DOS功能號(hào),AL通常設(shè)置為0INT 21H;因?yàn)檎{(diào)用了DOS 功能,所以要用INT 21H
PROG1 ENDS;段結(jié)束END START
對(duì)于start的問題。
Start只是一個(gè)標(biāo)號(hào),可以改名字。
表示程序的開始 end start 就是結(jié)束,
也有的用main的
2.通過人機(jī)對(duì)話,從鍵盤輸入一個(gè)10進(jìn)制數(shù)字(0~9),查表求鍵入數(shù)字的平方值,存入AL寄存器中,并顯示有關(guān)的提示信息。試編寫匯編語(yǔ)言程序
有點(diǎn)不明白 0DH,0AH,‘$'的作用:
這是把dos系統(tǒng)里的換行(0dh),回車(0ah)組成一個(gè)字符串,利用21h,-09h輸出字符串功能,在屏幕上輸出換行的作法
DATAS SEGMENTTABLE DB 0,1,4,9,16,25,36,49,64,81;數(shù)字0~9的平方值BUF DB 'please input a number(0~9):',0DH,0AH,'$';提示信息
DATAS ENDSSTACKS SEGMENT;此處輸入堆棧段代碼
STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS
START:MOV AX,DATASMOV DS,AX;設(shè)置DXMOV DX,OFFSET BUF;設(shè)置DX,使字符串首地址=DS:DXMOV AH,9H;顯示以$結(jié)尾的字符串INT 21HMOV AH,01H;等待輸入字符INT 21HAND AL,0FH MOV BX,OFFSET TABLE;BX指向表頭地址TABLEMOV AH,0;AX高位字節(jié)清零ADD BX,AX;表頭地址+鍵入數(shù)字AL,結(jié)果存入BXMOV AL,[BX];查表求得平方值MOV AH,4CHINT 21H
CODES ENDSEND START