汇编语言实验四 分支与循环结构程序设计

1.已定义四位年份,判断是否是闰年,是则输出y,不是输出n。

.model small,c
.stack 200h
.data
res db ?
year dw 2000h
mod4 dw ?
mod100 dw ?
mod400 dw ?
;这些类型的余数必须是dw和year类型匹配
.code
.startup
mov dx,0
mov ax,year;对于字类型,div后面的是除数,被除数默认在DX:AX中,商在AX中,余数在DX中
mov cx,4
div cx;这里不能直接除以4,而是要用寄存器来运算
mov mod4,dx

mov dx,0
mov ax,year
mov cx,100
div cx
mov mod100,dx

mov dx,0
mov ax,year
mov cx,400
div cx
mov mod400,dx

.if(mod4==0&&mod100!=0)||mod400==0
mov res,'Y';'Y'的十六进制是59
.else
mov res,'N' ;'N'的十六进制是4E
.endif

mov al,res
;最终al的值是4E
.exit
end

2.已知数据段,在BUF定义了10个无符号字节数。试编写程序将数组中最大值找出来存放到MAX。

.model small,c
.stack 100h
.data
buf db 10H,34H,55H,98H,20H,35H,76H,15H,0AH,65H
max db ?
buflen equ lengthof buf
.code
.startup
mov bx,0
mov al,buf[bx];获取数组第一个元素
inc bx
.while bx<buflen
.if buf[bx]>al
mov al,buf[bx]
.endif
inc bx
.endw
mov max,al
;最终结果就是98h
.exit
end

3.已知数据段中定义了BUF和NUM,其中BUF定义了一个以'$'作结束标志的字符串。编写程序:统计该字符串中数字字符的个数,保存在NUM。

.model small,c
.stack 200h
.data
buf db  '12AcxyCDE45','$'
num db 0

.code
.startup
mov bx,0
.while buf[bx]!='$'
.if buf[bx]>='0'&&buf[bx]<='9'
inc num
.endif
inc bx
.endw
mov al,num
;结果为4
.exit
end

4. 编程将数据段中存放的字节无符号整型数组从小到大排序。

.model small,c
.stack 200h
.data
buf db 10h,30h,88h,05h,66h,45h,9h,32h,80h,70h
buflen equ lengthof buf
.code
.startup
mov di,0
.while di<buflen
 mov si,1
 add si,di
 .while si<buflen
 mov bl,buf[si]
 mov cl,buf[di]
 ;这里不能使用ax和dx作为数组索引了,只能使用si和di这类索引寄存器
 .if cl>bl
 mov buf[si],cl
 mov buf[di],bl
 .endif
 inc si
 .endw
 inc di
.endw
mov si,buflen-1
mov di,0
mov al,buf[si]
mov bl,buf[di]
.exit
end

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咩咩大主教

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值