1、程序荟萃显示字符串程序DATAS SEGMENT STRING DB 0ah,0dh,10,13,Hello world!,13,10,$DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DX,AX LEA DX,offset STRING MOV AH,9 INT 21H MOV AH,4CH INT 21HCODES ENDSEND START注:13,10起换行的作用。要显示字符,先将首地址给DX。再mov ah,9 int 21h窗口不关闭,mov ah,7 int 21h 或 mov 0,a
2、h int 16h求两个数的和,显示其结果DATAS SEGMENT FIVE DB 5DATAS ENDSSTACKS SEGMENT DB 128 DUP (?)STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX MOV AL,FIVE ADD AL,3 ADD AL,30H MOV DL,AL MOV AH,2 INT 21H MOV AH,4CH INT 21HCODES ENDS END START注,只能显示一位数字。读一个多位数。这个数在ax中,除十求余,
3、再化成一个八位asc码,是通过dl传送的。data segmentdata1 db 5 dup(?) db $data endscode segment assume cs:code,ds:data;,ss:stack1;es:extrastart:mov ax,data mov ds,ax mov ax,135 mov si, offset data1 mov bx,10 add si,4loop1:sub dx,dx div bx or dl,30h ;将余数转换为ascii码。 mov si,dl dec si cmp ax,0 ;AX大于0时继续相除求余。 ja loop1 mov d
4、x,offset data1 mov ah,09h int 21h mov ah,7 int 21h code endsend start子过程的运用,先注意格式。逐步理解各指令的运用。data segmentdata1 db 5 dup(?) db $data ends;extra segment;d db 200 dup(?);extra endsstack1 segment db 20 dup(?)stack1 endscode segment assume cs:code,ds:data,ss:stack1;es:extrastart:mov ax,data mov ds,ax ;mo
5、v ax,extra ;mov es,ax mov ax,stack1 mov ss,ax ; mov ax,888 ; call htd ; mov dx,offset data1 mov ah,09h int 21h mov ah,7h int 21h htd proc near mov si, offset data1 mov bx,10 add si,4loop1:sub dx,dx div bx or dl,30h ;将余数转换为ascii码。 mov si,dl dec si cmp ax,0 ;AX大于0时继续相除求余。 ja loop1 ret htd endp code en
6、dsend start求二个数的和,可依次编写下列各程序。1) 将二个立即数相加,并显示。程序只要使用代码段,没有数据段。CODES SEGMENT ASSUME CS:CODESSTART: MOV AL,5 ADD AL,3 ADD AL,30H MOV DL,AL MOV AH,2 ;输出一个字符。字符值在DL中。 INT 21H MOV AH,4CH INT 21HCODES ENDS END START2) 将二个存储数相加,并显示。程序必须有数据段。DATAS SEGMENT one DB 5 two db 3DATAS ENDSSTACKS SEGMENT DB 128 DUP
7、(?)STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX MOV AL,one ADD AL,two ADD AL,30H MOV DL,AL MOV AH,2 INT 21H MOV AH,4CH INT 21HCODES ENDS END START3) 将上面的加指令换成减指令。即将add换成sub,观看结果。4) 多位数的加法data segmentdata1 db 5 dup(?) db $data ends CODES SEGMENT ASSUME CS:C
8、ODES,ds:dataSTART: mov ax,data mov ds,ax MOV Ax,15 ADD Ax,23 ; call htd ;用于表示为五位数字 ; mov dx,offset data1 mov ah,09h int 21h 用于显示出数字 ; MOV AH,4CH INT 21H ; htd proc near mov si, offset data1 mov bx,10 add si,4loop1:sub dx,dx div bx or dl,30h ;将余数转换为ascii码。 mov si,dl dec si cmp ax,0 ;AX大于0时继续相除求余。 ja loop1 ret htd endpCODES ENDS END START
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1