简单汇编程序范例.doc_第1页
简单汇编程序范例.doc_第2页
简单汇编程序范例.doc_第3页
简单汇编程序范例.doc_第4页
简单汇编程序范例.doc_第5页
免费预览已结束,剩余5页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.设堆栈指令SP为2000H,AX=3000H,BX=5000H,请编一段程序,将AX中的内容和BX的内容交换,请用堆栈作为两寄存器交换内容的中间存储单元,用Debug调试程序进行汇编与调试DATA SEGMENT DB ?DATA ENDSSTACK SEGMENT DB 5 DUP(?)STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START : MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,3000H MOV BX,5000H PUSH AX PUSH BX POP AX POP BX MOV AH,4CH INT 21H CODE ENDS END START2.设AX=00002H,编写一个程序将AX中的内容*10,要求用移位的方法完成 DATA SEGMENT ZZ DW 06H DATA ENDSSTACK SEGMENT DB 5 DUP(?)STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK MAIN PROC FARSTART :PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV AX,ZZ SAL AX,1H MOV BX,AX MOV CL,2 SAL AX,CL ADD AX,BX RET MAIN ENDPCODE ENDSEND START3.假设有一个数组5,-4,0,3,100,-51请编一个程序判断每个书大于0,等于0,还是小于0,并输出判断结果。DATA SEGMENTAA DB 5,-4,0,3,100,-51x0 DB Y0,$e0 DB Y=0,$YY DB 0DH,0AH,$DATA ENDSSTACK SEGMENT DB 200 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK MAIN PROC FARSTART :PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV CX,0 MOV SI,OFFSET AA PP:MOV DX,OFFSET YY MOV AH,9H INT 21HCMP CX,6 JE FIN ADD CX,1 MOV AX,SI MOV BX,OFFSET X0 ADD SI,2 CMP AX,0 JG SHOWd0 JE SHOWe0 SHOWx0: MOV DX,OFFSET x0 MOV AH,9H INT 21H JMP PPSHOWd0: MOV DX,OFFSET d0 MOV AH,9H INT 21H JMP PP SHOWe0: MOV DX,OFFSET e0 MOV AH,9H INT 21H JMP PP FIN:RET MAIN ENDPCODE ENDSEND START4.用汇编语言编写一个加法程序,1325+9839,请用ASCCII码的形式,将加书与被加数存放的数据区,DATA1和DATA2中,并将相加结果显示出来DATA SEGMENTDATA1 DW 1325HDATA2 DW 9839HDATA3 DB 8 DUP(?)DATA ENDSSTACK SEGMENT DB 20 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK MAIN PROC FARSTART :PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AXLEA SI,DATA1LEA DI,DATA2LEA BX,DATA3MOV CL,4 MOV AL, SI ADD AL, DI DAA MOV DI,AL SHR AL, CL ADD AL,30H MOV BX+3, AL MOV AL,DIAND AL,0FHADD AL,30HMOV BX+4,ALINC DIINC SIMOV AL, SI ADC AL, DI DAAJC XX MOV DI,AL SHR AL , CL ADD AL,30H MOV BX+1, AL MOV AL,DIAND AL,0FHADD AL,30HMOV BX+2,ALMOV BYTE PTR BX+5,$JMP YYXX:MOV BYTE PTR BX,31HMOV DI,AL SHR AL , CL ADD AL,30H MOV BX+1, AL MOV AL,DIAND AL,0FHADD AL,30HMOV BX+2,ALMOV BYTE PTR BX+5,$YY: MOV DX,BX MOV AH,9H INT 21H RET MAIN ENDPCODE ENDSEND START求出首地址为DATA的100D字数组中的最小偶数,并把它存放在AX中; 本程序通过编译,运行正确 Code Segment Assume CS:Code,DS:Code N equ 100Start: push cs pop ds ;使数据段与代码段同段 cld ;清方向标志,使变址寄存器增值 lea si,DATA ;字数据首地址 mov cx,N ;100个字数据 Find_Even: lodsw ;读入一个字数据test ax,1 ;是偶数?jz $+6 ;是,找到第一个偶数,退出循环,转去找最小偶数loop Find_Evenjcxz Exit_Proc ;没有偶数,结束程序dec cxjcxz Exit_Proc ;最后一个字数据是偶数,结束程序; 开始找最小偶数Compare: test si,1 ;是奇数?jnz Next_one ;是,转去处理下一个字数据cmp ax,si ;当前最小值与当前字数据比较 jbe Next_one ;当前最小值小于或等于当前字数据,不更新最小值 mov ax,si ;当前最小值大于当前字数据,更新最小值 Next_one:inc si inc si loop Compare Exit_Proc: mov ah,4ch ;结束程序 int 21h DATA:Code ENDS END Start ;编译到此结束 给下面简单汇编程序加上注释1.输入十六进制数输出十进制数data_seg segment DATAX dw 0000Hdata_seg endscode_seg segmentmain proc far assume cs:code_seg,ds:data_seg start: push ds sub ax,ax push ax mov ax,data_seg mov ds,ax call input_hex call prt_crlf mov bx,DATAX mov cx,1000d call div_display mov cx,100d call div_display mov cx,10d call div_display mov cx,1d call div_display mov ah,07 int 21h retmain endpinput_hex proc near mov bx,0newchar: mov ah,01h int 21h sub al,30h jl exit cmp al,10d jl add_to sub al,27h cmp al,0ah jl exit cmp al,10h jge exitadd_to: mov cl,4 shl bx,cl mov ah,0 add bx,ax jmp newcharexit: mov DATAX,bx retinput_hex endp prt_crlf proc near mov dl,0ah mov ah,02h int 21h mov dl,0dh mov ah,02h int 21h retprt_crlf endpdiv_display proc near mov dx,0 mov ax,bx div cx mov bx,dx mov dl,al add dl,30h mov ah,02h int 21h retdiv_display endpcode_seg endsend start2.输入十进制数输出十六进制数data_seg segment DATAX dw 0000Hdata_seg endscode_seg segmentmain proc far assume cs:code_seg,ds:data_seg start: push ds sub ax,ax push ax mov ax,data_seg mov ds,ax call input_decial mov dl,0ah mov ah,02h int 21h mov bx,DATAX mov ch,4rotate: mov cl,4 rol bx,cl mov al,bl and al,0fh add al,30h cmp al,3ah jl print_it add al,7h print_it: mov dl,al mov ah,02h int 21h dec ch jnz rotate mov dl,H mov ah,02 int 21h mov ah,07 int 21h retmain endpinput_decial proc near mov bx,0newchar: mov ah,1 int 21h sub al,30h jl exit cmp al,9d jg exit cbw xchg ax,bx mov cx,10d mul cx xchg ax,bx add bx,ax jmp newcharexit: mov DATAX,bx retinput_decial endp div_display proc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论