找回密码
 立即注册
查看: 178|回复: 0

软件工程汇编程序设计——分支程序实验,循环程序实验,综合程序设计实验

[复制链接]
发表于 2023-2-17 19:46 | 显示全部楼层 |阅读模式
实验2-分支程序实验

1.已知X、Y、Z、MAX为16位的带符号数,求三个数中最大值,结果存入MAX单元。
  1.   输入变量的初值定义:
  2.   输出结果的保存说明:
复制代码
  1. stack segment stack
  2.     db 50 dup(0)
  3. stack ends
  4. data segment
  5.     num db 10101010b, 10, 6FH
  6.     max db ?
  7. data ends
  8. code segment
  9.     assume cs:code, ds:data, ss:stack
  10. start:   mov ax,data
  11.          mov al,num
  12.          cmp al,num[1]
  13.          JGE next1
  14.          mov al,num[1]
  15.    next1:cmp al,num[2]
  16.          JGE next2
  17.          mov al,num[2]
  18.    next2:mov max,al
  19.          mov ax,4c00h
  20.          int 21h
  21. code ends
  22. end start
复制代码


2.编写程序计算Y的值,当X<0时,Y=-1;当X=0时,Y=0,当X>0时,Y=1,其中,输入数据X和输出数据Y均在数据段中定义,且皆为字节变量。
  1.   输入变量的初值定义:
  2.   输出结果的保存说明:
复制代码
  1. data segment
  2.     mems db 06H
  3.     memd db ?
  4. data ends
  5. code segment
  6.     assume cs:code, ds:data
  7. start:   mov ax,data
  8.          mov ds,ax
  9.          mov al,mems
  10.          cmp al,0
  11.          JGE next
  12.          mov al,-1
  13.          JMP done
  14.    next: JE done
  15.          mov al,1
  16.    done: mov ax,4c00H
  17.          int 21H
  18. code ends
  19. end start
复制代码



实验3-循环程序实验

1.求10个学生成绩中的最高成绩,结果存入MAX字节单元中,已知成绩为字节型。
  1.    输入变量的初值定义:
  2.    输出结果的保存说明:  
复制代码
  1. stack segment stack
  2.     db 200 dup(0)
  3. stack ends
  4. data segment
  5.     hui db 00,11,22,33,44,55,66,77,88,99
  6.     max db ?
  7. data ends
  8. code segment
  9.     assume cs:code,ds:data,ss:stack
  10. start:  mov ax,data
  11.         mov ds,ax
  12.         mov cx,10
  13.         mov bx,0
  14.         mov al,hui[bx]
  15.   again:inc bx
  16.         CMP hui[bx],al
  17.         JBE next
  18.         XCHG al,hui[bx]
  19.    next:loop again
  20.         mov max,al
  21.         mov ah,4ch
  22.         int 21h
  23. code ends
  24. end start
复制代码


2.编写程序用来分别统计一组数中奇数和偶数的个数,数据和结果均在数据段中。
  1.   输入变量的初值定义:
  2.   输出结果的保存说明:
复制代码
  1. data segment
  2.     dw 1,2,3,4,5,6,7,8,9,10
  3. data ends
  4. code segment
  5.     assume cs:code,ds:data
  6. start:  mov ax,data
  7.         mov ds,ax
  8.         mov si,0
  9.         mov dx,0
  10.         mov cx,10
  11.         mov bl,2
  12.       S:mov ah,0
  13.         mov al,[si]
  14.         div bl
  15.         CMP ah,0
  16.         JE seven
  17. suneven:inc dl
  18.         JMP short OK
  19.   seven:inc dh
  20.      OK:add si,2
  21.         loop s
  22.         mov ax,4c00h
  23.         int 21h
  24. code ends
  25. end start
复制代码




实验四:综合程序设计实验

1.编写一个汇编程序,要求对键盘输入的大写字母用小写字母显示出来,键盘输入的小写字母用大写字母显示出来。
  1. 子程序过程说明:
  2. 输出结果说明:
复制代码
  1. CODE SEGMENT
  2.     MAIN PROC FAR
  3. ASSUME CS:CODE
  4. START:PUSH DS
  5.         SUB AX,AX
  6.         PUSH AX
  7.         A1:MOV AH,1
  8.         INT 21H
  9.         CMP AL,' '
  10.         JZ EXT0
  11.         CMP AL,'A'
  12.         JB A1
  13.         CMP AL,'Z'
  14.         JA A2
  15.         ADD AL,20H
  16.         MOV AH,2
  17.         MOV DL,AL
  18.         INT 21H
  19.         JMP A1
  20.         A2:SUB AL,20H
  21.         MOV AH,2
  22.         MOV DL,AL
  23.         INT 21H
  24.         JMP A1
  25.         EXT0:RET
  26.         MAIN ENDP
  27. CODE ENDS
  28. END START
复制代码


2.编写一个汇编程序,使得从键盘上输入十个以内的字符,以输入空格结束,然后按数字、字母和其它符号三类统计各自的个数,在屏幕上依次显示出统计结果。
  1. 子程序过程说明:
  2. 输出结果说明:
复制代码
  1. STACK SEGMENT STACK
  2. DB 200 DUP(0)
  3. STACK ENDS
  4. DATA SEGMENT
  5. X  DB  '0'
  6. DATA ENDS
  7. CODE  SEGMENT
  8. ASSUME CS:CODE,DS:DATA,SS:STACK
  9. START:         MOV AX,DATA
  10.         MOV DS,AX
  11.         SUB AX,AX
  12.         MOV BH,0
  13.         MOV BL,0
  14.         MOV DH,0       
  15.         MOV CX,10
  16. AA1:        CMP CX,0
  17.         JZ  STOP
  18.         MOV AH,1
  19.         INT 21H
  20.         CMP AL,20H
  21.         JB  STOP
  22.         CMP AL,'0'
  23.         JB  CC2
  24.         CMP AL,'9'
  25.         JA  CC1
  26.         INC BH
  27.         JMP NEXT1
  28. CC1:        CMP AL,'A'
  29.         JB CC2
  30.         CMP AL,'Z'
  31.         JB NEXT
  32.         CMP AL,'a'
  33.         JB CC2
  34.         CMP AL,'z'
  35.         JA CC2
  36. NEXT:        INC BL
  37.         JMP NEXT1
  38. CC2:        INC DH
  39. NEXT1:        LOOP         AA1
  40. STOP:        MOV AH,2
  41.         MOV DL,BH
  42.         ADD DL,X
  43.         INT 21H
  44.         MOV AH,2
  45.         MOV DL,BL
  46.         ADD DL,X
  47.         INT 21H
  48.         MOV AH,2
  49.         MOV DL,DH
  50.         ADD DL,X
  51.         INT 21H
  52.         MOV AX,4C00H
  53.         INT 21H
  54. CODE         ENDS
  55. END         START
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-6-27 15:22 , Processed in 0.071016 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表