当前位置: 代码迷 >> 汇编语言 >> 汇编课程设计
  详细解决方案

汇编课程设计

热度:9062   发布时间:2013-02-26 00:00:00.0
求助:汇编课程设计
按下列要求编程:
(1)从键盘输入两个四位十六进制数。
(2)将这两个数以二进制形式输出,要求输出的0 和1 颜色交替变化。
(3)找出这两个数中的偶数,若有则以十进制输出,若无,输出“NO”。
(4)计算这两个数的平方和。
(5)数据的输入和结果的输出都要有必要的提示,且提示独占一行。
(6)要使用到子程序。


------解决方案--------------------------------------------------------
Assembly code
data    segmentstri    db 'input a number :',0ah,0dh,'$' max    db 5 actlen    db ?string    db 5 dup(?)num    dw 2 dup(?)data    endsstack    segment     dw 256h dup(0)stack    endscode    segment    assume ds:data,ss:stack,cs:codestart:  mov ax,data    mov ds,ax        call input    mov ax,num    mov num+2,ax    mov dl,0ah   ;换行    mov ah,2    int 21h    call input    mov ah,4ch    int 21hinput proc near        ;输入一个四位十六进制数,0~F之间的四个字符    push dx    push ax    push si    push cx    push bx    mov dx,offset stri  ;显示字符串    mov ah,9h    int 21h    lea dx,max       mov ah,0ah    int 21h        ;调用DOS中断输入一个四位十六进制        lea si,string  ;取字符串首址    mov cx,4          xor dx,dx    get:    push cx    mov al,[si]    ;取一个字符    cmp al,'0'    jb return    cmp al,'F'     ;检查输入的字符是否在0~F之间    ja return      ;否,返回    cmp al,'9'     ;转换为对应的数字    jle deci    sub al,07hdeci:    sub al,30h    cbw    or  dx,ax    mov bx,dx    and bx,0f000h    jnz nos    mov cl,4    shl dx,clnos:    inc si    pop cx    loop getreturn:    mov num ,dx    ;保存结果    pop bx    pop cx    pop si    pop ax    pop dx    retinput endpcode    ends    end start
  相关解决方案