微机原理软件实验程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
以符号地址NUM开始的连续存储单元中,顺序存放着16个数(请在实验中随机输入),试统计其中正数、负数及零的个数,并把它们存放在SI、DI及BX中data segment
num db 27,-9,36,-7,-14,0,8,69,-48,0,0,66,15,0,-5,71
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
xor al,al
xor dx,dx ;清空,准备存负数的个数
xor di,di ;清空,准备存正数的个数
xor bx,bx ;清空,准备存0 的个数
lea si,num ;地址指针
mov cx,16
cld
check:lodsb ;取一个数据到AL
or al,al ;该数据与自身相或,影响标志位
js x1 ;如果SF=1 是负数,DI+1
jz x2 ;如果ZF=1 是0 BX+1
inc dx ;如果是正数,DX+1
jmp next
x1: inc di
jmp next
x2: inc bx
next: loop check
mov si,dx ;把正数的个数存到SI
mov ah,4ch
int 21h
code ends
end start
把从MEM1单元开始的10个无符号数94,56,78,32,86,89,91,65,73,50,按照从高到低顺序排列后,存放在MEM2开始的10个单元中
data segment
mem1 db 94,56,78,32,86,89,91,65,73,50
mem2 db 10 dup(?)
data ends
code segment
assume cs:code,ds:data,es:data
start:mov ax,data
mov ds,ax
mov es,ax ; data段的段基址既赋给ds 也赋给es
; data段既是数据段也是附加段
lea di,mem1; di指向待排序数的首地址
mov bl,9 ; 外循环次数
next1:mov si,di
mov cl,bl
next2:mov al,[si]
inc si
cmp al,[si]
jnc next3
mov dl,[si]
mov [si-1],dx
mov [si],al
next3:dec cl
jnz next2
dec bl
jnz next1 ; 以上程序完成排序
; 以下程序完成串复制,
; 把从MEM1单元开始的10个数复制到MEM2开始的10个单元中lea si,mem1
lea di,mem2
mov cl,10
rep movsb
mov ah,4ch
int 21h
code ends
end start
编写程序实现从键盘输入一个字母并显示,判断其为大写还是小写,如果是大写将其转换为小写,如果是小写转换为大写,并将转换后的结果显示出来data segment
string db 'Please input a letter:$'
data ends
code segment
assume cs:code,ds:data
main proc
start: mov ax,data
mov ds,ax
call transform
mov ah,4ch ;结束
int 21h
main endp ;主程序结束
transform proc ;子程序开始
lea dx,string
again: mov ah, 01h
int 21h ;键盘接收一个字符并显示
;大写字母的ASCII码范围41H-5AH
;小写字母的ASCII码范围61H-7AH
cmp al, 41h
jb wrong ;小于41h说明输入的不是字母,显示出错,
cmp al,5ah ;判断是否落在大写字母范围内
ja next ;没落在大写字母范围内,就需要继续判断是否在小写字母范围内
add al,20h ;若是大写字母,则改成小写字母
jmp display ;显示
next: cmp al,61h ;跟61h比较如果小于则不是字母,显示出错
jb wrong
cmp al,7ah ;再跟7ah比较,看是否落在小子字母范围内
ja wrong
sub al,20h ;将小写字母变成大写字母
jmp display
wrong: mov ah,9
int 21h
jmp again
display:mov ah,02h ;显示
mov dl,al
int 21h
ret
transform endp
code ends
end start