《1》、实现绕圈的笑脸: assume cs:code code segment dec dh dec dl inc dh inc dl ;预存指令 start: mov ax,cs mov ds,ax mov si,0 lea di,s1 ;使ds:si指向预存指令,ds:di指向目的地址 mov dx,0h ;光标起始坐标0,0 s:mov ah,2 mov bh,0 int 10h ;调用int 10h第2号中断,置光标 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> mov ah,0ah ;int 10h第0a号中断 mov al,2 ;显示笑脸 mov bh,0 ;第0页 mov cx,1 ;重复次数1 int 10h call delay ;延迟显示 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> mov ah,0ah ;用int 10h 0a号中断清除笑脸 mov al,0 mov bh,0 int 10h ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> cmp dh,24 ;行号是否为24 jb L ;小于则转 L mov ax,[si] ;等于则改s1处为自减 mov [di],ax L2:cmp dl,79 ;列号是否为79 jb L1 ;小于则转 L1 mov ax,[si+2] ;等于,改si+2处为自减 mov [di+2],ax jmp s1 L:cmp dh,0 ;行号是否为0 ja L2 ;大于0转L2 mov ax,[si+4] ;为0 ,改s1处为自加 mov [di],ax jmp L2 L1:cmp dl,0 ;列号是否为0 ja s1 ;大于转 s1 mov ax,[si+6] ;等于改 s1+2处 自加 mov [di+2],ax s1:inc dh inc dl jmp s mov ax,4c00h int 21h ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> delay:push ax push dx mov dx,2000h mov ax,0 s3: sub ax,1 sbb dx,0 cmp ax,0 jne s3 cmp dx,0 jne s3 pop dx pop ax ret ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> code ends end start 改进一下的【加中断可控制了】: assume cs:code code segment dec dh dec dl inc dh inc dl ;预存指令 start: mov ax,cs mov ds,ax mov si,0 lea di,s1 ;使ds:si指向预存指令,ds:di指向目的地址 mov dx,0h ;光标起始坐标0,0 s:mov ah,2 mov bh,0 int 10h ;调用int 10h第2号中断,置光标 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> mov ah,0ah ;int 10h第0a号中断 mov al,2 ;显示笑脸 mov bh,0 ;第0页 mov cx,1 ;重复次数1 int 10h call delay ;延迟显示 in al,60H cmp al,10H jz over ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> mov ah,0ah ;用int 10h 0a号中断清除笑脸 mov al,0 mov bh,0 int 10h ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> cmp dh,24 ;行号是否为24 jb L ;小于则转 L mov ax,[si] ;等于则改s1处为自减 mov [di],ax L2:cmp dl,79 ;列号是否为79 jb L1 ;小于则转 L1 mov ax,[si+2] ;等于,改si+2处为自减 mov [di+2],ax jmp s1 L:cmp dh,0 ;行号是否为0 ja L2 ;大于0转L2 mov ax,[si+4] ;为0 ,改s1处为自加 mov [di],ax jmp L2 L1:cmp dl,0 ;列号是否为0 ja s1 ;大于转 s1 mov ax,[si+6] ;等于改 s1+2处 自加 mov [di+2],ax s1:inc dh inc dl jmp s over: mov ax,4c00h int 21h ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> delay:push ax push dx mov dx,500h mov ax,0 s3: sub ax,1 sbb dx,0 cmp ax,0 jne s3 cmp dx,0 jne s3 pop dx pop ax ret ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> code ends end start 《2》、像素颜色 ;子程序display入口参数 ;cx列号 ;dx行号 ;al像素颜色 ;子程序delay延时 stack segment stack db 100h dup(?) stack ends code segment assume cs:code,ds:code,ss:stack start: xor ax,ax ;设置显示模式(640*480 16色图形) mov ah,0 mov al,12h int 10h mov ah,0bh ;置调色板背景色 mov bh,0 mov bl,0 int 10h mov cx,0 mov dx,0 mov al,0 s2:call display call delay inc al cmp al,10h je exit add cx,10 jmp s2 exit: mov ah,01 int 21h ;esc退出观看效果 cmp al,1bh jne exit mov ax,0003h int 10h mov ax,4c00h int 21h display:push ax push bx push si mov bx,cx mov si,cx add si,10 s: mov ah,0ch int 10h inc cx cmp cx,si jne s mov cx,bx inc dx cmp dx,10 jne s mov dx,0 pop si pop bx pop ax ret delay:push ax push dx mov dx,2000h mov ax,0 s1:sub ax,1 sbb dx,0 cmp ax,0 jne s1 cmp dx,0 jne s1 pop dx pop ax ret code ends end start 《3》进制转换: (1)16转10进制: TITLE CONVERT HEXADECIMAL TO BCD DATA SEGMENT PROMPT DB 'Hello Boss! INPUT sixten bits number ,please :$' HEXBUF DB 3,0,3 DUP(0) DISP DB 0AH,0DH BCDBUF DB 6 DUP(0),'$' DATA ENDS STACK1 SEGMENT PARA STACK DW 20H DUP(0) STACK1 ENDS COSEG SEGMENT ASSUME CS:COSEG,DS:DATA,SS:STACK1 HEXBCD: MOV AX,DATA MOV DS,AX LEA DX,PROMPT MOV AH,09H INT 21H LEA DX,HEXBUF MOV AH,0AH INT 21H LEA SI,HEXBUF+2 MOV BX,0 MOV CH,HEXBUF+1 HEX1: MOV AL,[SI] CMP AL,'9' JBE NUMB SUB AL,07H NUMB: AND AL,0FH MOV CL,04 SAL BX,CL OR BL,AL INC SI DEC CH JNE HEX1 MOV WORD PTR BCDBUF+0,0 MOV WORD PTR BCDBUF+2,0 MOV WORD PTR BCDBUF+4,0 TEST BX,8000H JNS PLUS MOV BCDBUF,'-' NEG BX PLUS: MOV CH,0FH LOP0: CLC SHL BX,1 CALL ADDIT CALL MULTI DEC CH JNE LOP0 SHL BX,1 CALL ADDIT LEA DI,BCDBUF+1 MOV CX,3 LOP1: OR BYTE PTR [DI],30H INC DI LOOP LOP1 LEA DX,DISP MOV AH,09H INT 21H MOV AH,4CH INT 21H ADDIT PROC LEA DI,BCDBUF+3 MOV CL,3 ADD1: MOV AL,[DI] ADC AL,0 AAA MOV [DI],AL DEC DI DEC CL JNE ADD1 RET ADDIT ENDP MULTI PROC LEA DI,BCDBUF+3 MOV CL,3 CLC MUL1: MOV AL,[DI] ADC AL,AL AAA MOV [DI],AL DEC DI DEC CL JNE MUL1 RET MULTI ENDP COSEG ENDS END HEXBCD (2)十转十六进制: TITLE ADDITION DATA SEGMENT A1 DB "Input a number please: ","$" A2 DB 0DH,0AH,"The result is: ","$" DATA ENDS STACK1 SEGMENT PARA STACK DW 20H DUP(?) STACK1 ENDS COSEG SEGMENT ASSUME CS:COSEG,DS:DATA,SS:STACK1 START: MOV AX,DATA MOV DS,AX MOV DX,OFFSET A1 MOV AH,9 INT 21H MOV AH,01H INT 21H AND AL,0FH SUB AH,AH ADD BX,AX MOV AH,01H INT 21H CMP AL,0DH JE ERR1 MOV DX,BX MOV CL,3 SAL BX,CL ADD BX,DX ADD BX,DX AND AL,0FH SUB AH,AH ADD BX,AX ERR1: MOV DX,OFFSET A2 MOV AH,9 INT 21H SUB AX,AX MOV CH,4 ERR2: MOV CL,4 ROL BX,CL MOV AL,BL AND AL,0FH ADD AL,30H CMP AL,3AH JB ERR3 ADD AL,07H ERR3: MOV DL,AL MOV AH,2 INT 21H DEC CH JNZ ERR2 MOV AH,4CH INT 21H COSEG ENDS END START
相关推荐
《汇编语言程序设计答案解析》 汇编语言,作为计算机科学的基础,是与机器硬件直接交互的语言。它以其高效、直接控制硬件的特性,在系统编程、设备驱动、嵌入式系统等领域扮演着重要角色。《汇编语言程序设计》这门...
本书为清华大学计算机汇编语言程序设计课教材,主要阐述IBM PC及其兼容机汇编语言程序程序设计的方法和技术。全书共13章:第一、二章介绍基础知识;第三、四章说明IBM PC机的指令系统及包括伪操作在内的汇编语言程序...
"80x86汇编语言程序设计课后答案" 本资源是沈美明编著的《80x86汇编语言程序设计》课后答案,涵盖了汇编语言程序设计的基础知识和实践应用。 第一章 ### 1.1 将十进制数转换为二进制数和十六进制数 在计算机科学...
从给定的信息来看,主要关注的是“Inter汇编语言程序设计(第五版)”这一书籍。这本教材是学习Intel架构下汇编语言程序设计的重要资料,尤其对于那些希望深入了解低级编程、计算机体系结构以及操作系统原理的学习者...
《80x86汇编语言程序设计教程》是一本专业的计算机编程书籍,由杨季文等编著,由钱培德审校,由清华大学出版社出版。此书详细讲述了80x86系列汇编语言的程序设计方法,适合不同层次的读者学习和参考。以下从几个方面...
《INTEL汇编语言程序设计》是一本深入探讨汇编语言编程的经典著作,作者Kip Irvine是该领域的权威专家。本书覆盖了从基础概念到高级技术的全面内容,旨在帮助读者理解和掌握Intel架构下的汇编语言编程技巧。汇编语言...
80x86汇编语言程序设计教程.rar80x86汇编语言程序设计教程.rar80x86汇编语言程序设计教程.rar80x86汇编语言程序设计教程.rar80x86汇编语言程序设计教程.rar80x86汇编语言程序设计教程.rar80x86汇编语言程序设计教程....
在Windows环境下进行32位汇编语言程序设计是一项技术性极强的工作,它涉及到操作系统、处理器架构、编程语言以及软件开发工具等多个方面的知识。这里,我们将深入探讨这一主题,涵盖核心概念、关键技术和实践应用。 ...
汇编语言程序设计电子版是关于汇编语言的教学和应用的专业书籍。汇编语言是一种低级编程语言,它与计算机的机器语言十分接近,但用符号代替了二进制的0和1,使得程序更易于理解和编写。汇编语言程序设计涉及的主要...
《刘恩海汇编语言程序设计教程》是针对计算机科学领域的一门重要课程,主要讲解如何用汇编语言编写程序。汇编语言是一种低级编程语言,它与计算机硬件的指令集紧密相关,每一个汇编指令都对应着一个或多个机器码。本...
汇编语言程序设计课后习题答案汇编语言程序设计课后习题答案汇编语言程序设计课后习题答案汇编语言程序设计课后习题答案
ibm-pc汇编语言程序设计教程参考答案ibm-pc汇编语言程序设计教程参考答案ibm-pc汇编语言程序设计教程参考答案ibm-pc汇编语言程序设计教程参考答案ibm-pc汇编语言程序设计教程参考答案ibm-pc汇编语言程序设计教程参考...
在Windows环境下进行32位汇编语言程序设计是一项技术性极强的工作,它涉及到操作系统、处理器架构、编程语言以及软件开发工具等多个方面的知识。本文将深入探讨这一主题,旨在为初学者提供一个全面的了解,并为有...
钱晓捷教授编著的《新版汇编语言程序设计 第二版》是该领域的一本重要参考书籍,它不仅覆盖了8086指令系统、汇编语言程序格式、基本汇编语言程序设计等基础知识,还扩展到32位指令及其编程,并且介绍了与C/C++语言的...
汇编语言程序的上机过程及调试 汇编语言程序的上机过程是指将汇编语言源程序转换为机器语言程序的过程。这个过程主要包括四个步骤:编辑汇编语言源程序、汇编源程序、连接程序和运行调试。 一、编辑汇编语言源程序...
本书主要阐述80X86汇编语言程序设计方法和技术。全书共分四部分:第1章和第2章为基础知识部分;第3章和第4章为编程工具部分,主要内容为80X86的指令系统与寻址方式,以及包括伪操作在内的汇编语言程序格式;第5章-第...
32位汇编语言程序设计知识点总结 本文档涵盖了32位汇编语言的重要知识点,包括汇编语言的基本概念、数据类型、寻址方式、寄存器、指令集、程序设计等方面的知识点。 一、汇编语言基础 * 汇编语言是一种低级语言,...
汇编语言程序设计是计算机科学领域的一个重要分支,它是一种低级编程语言,与机器语言密切相关,但比机器语言更易读、易写。在学习汇编语言时,理解和掌握指令集、寄存器操作、数据类型、寻址模式、流程控制结构以及...