汇编语言程序设计 实验四

1.已定义A、B、C,从键盘输入两位十六进制数A,将A和 B中较大的数保存到C并输出,输入允许大小写字母,输出用大写字母。
.DATA
A DB ?
B DB 88H
C DB ?

assume cs:code,ds:data
data segment
	A db 0
	B db 88h
	C db 0
data ends

code segment
start:
		mov ax,data
		mov ds,ax
		mov cx,2
		mov bx,0
		
	  s:mov ah,1 ;循环输入两个字符,代表两位十六进制数
		int 21h
		
		mov ah,al
		call change ;通过change子程序将输入的字符转换成十进制数保存在al中
		cmp cx,1
		je mk
		
		mov al,16 ;将高位乘以16放入A中
		mul ah
		add byte ptr ds:[bx],ax
		
		jmp short k
	mk: add byte ptr ds:[bx],ah ;低位直接加进A中
	k:  loop s
	
		mov bx,0 ;比较A和B中的数的大小,将大的赋值给C
		mov al,[bx]
		cmp al,[bx+1]
		jc next
		mov [bx+2],al
		jmp short last
   next:mov al,[bx+1]
		mov [bx+2],al
   last:
   		mov al,[bx+2] ;last这儿的两步将al中的高4位以字符形式输出
   		and al,11110000b
   		mov cl,4
   		ror al,cl
   		call change1 ;change1这个子程序的作用是把十六进制数转换成相应字符的ascii码
   		mov ah,2
   		mov dl,al
   		int 21h

   		mov al,[bx+2]
   		and al,00001111b
   		call change1
   		mov ah,2
   		mov dl,al
   		int 21h
	
	change:
		sub dx,dx
		cmp ah,58
		jc x
		sub dx,dx
		cmp ah,71
		jc y
		sub dx,dx
		cmp ah,103
		jc z
	 ok:ret
	
		x:sub ah,30h
		jmp ok
		y:sub ah,37h
		jmp ok
		z:sub ah,57h
		jmp ok

	change1:
		sub dx,dx
		cmp al,10
		jc x1
		add al,37h
		jmp short ok1
	 x1:
		add al,30h
	ok1:ret
		
		mov ax,4c00h
		int 21h
code ends
end start

2.已定义四位数字年份,判断是否是闰年,是则输出y,不是输出n。
.DATA
YEAR DB ‘1975’

assume ds:data,cs:code,ss:stack
data segment
     year db '2004'
     year1 dw 0
     return db 'yn'
data ends

stack segment
     db 64h dup(0)
stack ends

code segment
start:
          mov ax,data
          mov ds,ax
          call change
          call pan

          mov ax,4c00h
          int 21h


     change:
          push bx
  
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值