2、使用地址表实现如下功能:根据输入的数字1-7,分别显示相应的英文星期名,如果输入其他字符,则重新输入。

        .model small
        .stack
        .data
msg	db 'Input number(1~7):',0dh,0ah,'$'
msg1	db 'Monday',0dh,0ah,'$'
msg2	db 'Tuesday',0dh,0ah,'$'
	
msg3	db 'Wednesday ',0dh,0ah,'$'
msg4	db 'Thursday',0dh,0ah,'$'
msg5	db 'Friday',0dh,0ah,'$'
msg6	db 'Saturday',0dh,0ah,'$'
msg7	db 'Sunday',0dh,0ah,'$'
table	dw disp1,disp2,disp3,disp4
        dw disp5,disp6,disp7
        .code 
        .startup
start:  mov dx,offset msg;提示输入数字
	    mov ah,9	
        int 21h	    
        mov ah,1	;等待按键
        int 21h

        cmp al,'1'	;数字 < 1?
	
        jb start
	
        cmp al,'7'	;数字 > 7?
	
        ja start
	
        and ax,000fh	;将ASCII码转换成数值
        dec ax
	
        shl ax,1	;等效于add ax,ax
	mov bx,ax
	    mov dl,0ah
	    mov ah,02h
	    int 21h
        jmp table[bx];(段内)间接转移:IP←[table+bx]
        
start2:	
        mov ah,9	
        int 21h
	.exit 0
        ;
disp1:	
        mov ax,offset msg1	;处理程序1
	    mov dx,ax
        jmp start2
disp2:	
        mov ax,offset msg2
        mov dx,ax	;处理程序2	
        jmp start2
disp3:	
        mov ax,offset msg3	;处理程序3	
        mov dx,ax
        jmp start2
disp4:	
        mov ax,offset msg4	;处理程序4	
        mov dx,ax
        jmp start2
disp5:	
        mov ax,offset msg5	;处理程序5	
        mov dx,ax
        jmp start2
disp6:	
        mov ax,offset msg6	;处理程序6	
        mov dx,ax
        jmp start2
disp7:	
        mov ax,offset msg7	;处理程序7	
        mov dx,ax
        jmp start2
        end 



 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
下面是一个汇编语言程序,可以实现您提出的要求: ``` .model small .stack 100h .data prompt db '请输入1-7的数字:$' error db '输入有误,请重新输入!$' sun db 'Sunday$' mon db 'Monday$' tue db 'Tuesday$' wed db 'Wednesday$' thu db 'Thursday$' fri db 'Friday$' sat db 'Saturday$' .code main proc mov ax, @data mov ds, ax ; 输出提示信息 mov ah, 09h lea dx, prompt int 21h ; 读取用户输入 mov ah, 01h int 21h cmp al, '1' je sunday cmp al, '2' je monday cmp al, '3' je tuesday cmp al, '4' je wednesday cmp al, '5' je thursday cmp al, '6' je friday cmp al, '7' je saturday jmp error_output sunday: mov ah, 09h lea dx, sun int 21h jmp exit_program monday: mov ah, 09h lea dx, mon int 21h jmp exit_program tuesday: mov ah, 09h lea dx, tue int 21h jmp exit_program wednesday: mov ah, 09h lea dx, wed int 21h jmp exit_program thursday: mov ah, 09h lea dx, thu int 21h jmp exit_program friday: mov ah, 09h lea dx, fri int 21h jmp exit_program saturday: mov ah, 09h lea dx, sat int 21h jmp exit_program error_output: mov ah, 09h lea dx, error int 21h exit_program: mov ah, 4ch int 21h main endp end main ``` 程序的主要流程如下: 1. 输出提示信息,要求用户输入 1-7 的数字。 2. 读取用户输入字符,根据输入数字跳转到不同的标签进行处理。 3. 如果输入的不是 1-7 的数字,则直接跳转到错误提示的标签。 4. 对于每个数字,都有一个对应的标签,输出相应英文星期。 5. 最后,程序退出。 注意,以上程序是使用 DOS 环境下的汇编语言编写的,如果您需要在其他环境下运行,可能需要进行适当的修改。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值