1. 程式人生 > >80x86組合語言:輸入數字,輸出對應月份的英文

80x86組合語言:輸入數字,輸出對應月份的英文

;從鍵盤輸入1,2,3,4,5,6.....12,輸出相對應的月份的英文,

;eg,輸入5,則輸出may。

;不想輸入就輸入e或者E,結束程式。

;要求:輸入前有提示語。

;若輸入的是大於12或者小於0或者是字母,則顯示輸入錯誤。

;做而論道編寫的程式如下:

ASSUME  CS:CODE, DS:DATA

;---------------------------------

DATA SEGMENT        ;資料段

    STRING01  DB  13, 10, 'January   $'

CHANG  EQU  $ - STRING01

    STRING02  DB  13, 10, 'February  $'

    STRING03  DB  13, 10, 'March     $'

    STRING04  DB  13, 10, 'April     $'

    STRING05  DB  13, 10, 'May       $'

    STRING06  DB  13, 10, 'June      $'

    STRING07  DB  13, 10, 'July      $'

    STRING08  DB  13, 10, 'August    $'

    STRING09  DB  13, 10, 'September $'

    STRING10  DB  13, 10, 'October   $'

    STRING11  DB  13, 10, 'November  $'

    STRING12  DB  13, 10, 'December  $'

    MSG1  DB  13, 10, 'Input num (1~12, Others EXIT): $'

    X     DB  ?

    TEMP  DB  ?

DATA ENDS

;---------------------------------

CODE SEGMENT         ;程式碼段

START:

    MOV   AX, DATA

    MOV   DS, AX

;--------------------------------

IN_LOOP:

    LEA   DX, MSG1

    MOV   AH, 9

    INT   21H

    MOV   X,  0         ;資料清零.

    MOV   CX, 2         ;輸入2位

_INX:

    MOV   AH, 1         ;輸入單個字元.

    INT   21H

;--------------------------------

    CMP   AL, 13

    JE    EXIT_IN

    CMP   AL, '0'

    JB    _IN_ERR       ;小於'0',不是數字.

    CMP   AL, '9'

    JA    _IN_ERR

    SUB   AL, '0'       ;還原為數字

    MOV   TEMP, AL      ;暫存

    MOV   AL, x

    MOV   BL, 10        ;老資料乘以10

    MUL   BL

    ADD   AL, TEMP      ;加上新資料.

    MOV   x,  AL        ;儲存.

    LOOP  _INX          ;繼續輸入.

    JMP   EXIT_IN

;--------------------------------

_IN_ERR: 

    MOV   DL, 8

    MOV   AH, 2

    INT   21H

    MOV   DL, ' '

    INT   21H

    MOV   DL, 8

    INT   21H

    JMP   _INX

;--------------------------------

EXIT_IN:

    MOV   AL, x         ;

    CMP   AL, 0

    JE    EXIT

    CMP   AL, 12

    JA    EXIT

    DEC   AL    

    LEA   DX, STRING01

    MOV   BL, CHANG

    MUL   BL

    ADD   DX, AX

    MOV   AH, 9

    INT   21H

    JMP   IN_LOOP    ;迴圈

EXIT:

    MOV   AH, 4CH    ;結束程式

    INT   21H

CODE ENDS

    END   START

;---------------------------------

執行後,顯示如下:

C:\MASM>M1

Input num (1~12, Others EXIT): 4

April

Input num (1~12, Others EXIT): 3

March

Input num (1~12, Others EXIT): 12

December

Input num (1~12, Others EXIT):

C:\MASM>

提問者評價:謝謝幫忙。

相關推薦

80x86組合語言輸入數字輸出對應月份英文

;從鍵盤輸入1,2,3,4,5,6.....12,輸出相對應的月份的英文,;eg,輸入5,則輸出may。;不想輸入就輸入e或者E,結束程式。;要求:輸入前有提示語。;若輸入的是大於12或者小於0或者是字母,則顯示輸入錯誤。;做而論道編寫的程式如下:ASSUME  CS:CODE, DS:DATA;-----

80x86 組合語言輸入字串、顯示其中數字

從鍵盤輸入一個字串,將其中的數字字元在下一行原樣顯示,而其他字元則不顯示。做而論道程式設計如下:    (2014-05-13 17:49 提問者採納)ASSUME  CS:CC, DS:QQQQ  

演算法輸入任意一個4位數整數將該數反序輸出(例如輸入1354輸出4531)

程式分析:可以用取餘符來獲取這個四位數的每一位,然後反序重新組合輸出。 #include "stdio.h" int main(void) { int num = 0, opnum = 0; in

【python 2.7】輸入任意字母數字輸出對應的莫爾斯碼並播放聲音

技術 ini lease pre 無線 () .com bye eas #python 2.7 #!/usr/bin/env python # -*- coding:utf-8 -*- import os import winsound,sys,time _

課堂測試輸入整數求出各位數字的和

option system dia int 整數 != tdi n) .cn import javax.swing.JOptionPane;public class Add { public static void main(String[] args) { Str

用switch,case 輸入一個數字輸出相對應的福娃的名字

package p1; import java.util.Scanner; /**     auther:xiuran-hua      function:用switch,case 輸入一個數字,輸出相對應的福娃的名字  

輸入5個數字輸出最大的數

                                          &

Lua --- 輸入一個數字輸出階乘

1 function fact(n) 2 if 1 == n then 3 return 1 4 else 5 return n * fact(n-1) 6 end 7 end 8 9 print("Enter a number

Python 運用所學知識製作一個歌詞解析器要求輸入時間給出對應歌詞

學了將近兩週python了,遇到了一道挺有意思的題分享一下:      製作一個歌詞解析器,要求:輸入一個時間點能給出對應時間的歌詞 廢話不多說,直接上圖,基本每步都有註釋: mulrc = '''[ti:藍蓮花] [ar:許巍] [al:留聲十年絕版青

編寫程式可一直接收鍵盤字元輸入小寫字元輸出大寫字元;輸入大寫字元輸出小寫字元;輸入數字輸出

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main() { char str1[] = "abcdefghijklmnopwrstuvwxyz"; char str2[

輸入年份和天數輸出對應的年、月、日

例:輸入格式:2000 61        輸出格式:2000-3-1    即2000年的第61天是3月1日  //使用指標作為函式引數返回多個函式值 #include <stdio.h> void month_day(int year,int yearda

Java中根據輸入數字列印對應的菱形

package test01; import java.util.Scanner; public class test {     public static void main(String[] args) {         // 根據輸入,控制檯輸出菱形     

一段可迴圈輸入數字經過計算後輸出的dos批處理程式碼留存參考

技術群裡有新人問這個題目,無聊寫了這個dos批處理。 因為十幾年沒寫dos了,都忘記了,寫這幾行程式碼花了半個小時,所以打算記錄下來,留存備用 @echo off :start set /p mem

輸入數字逆轉並輸出漢字形式

function reverse(){ var num = arguments[0]; num = num.toString(); var arr = num.split(""); var newArr = arr.reverse(); var word = ['零

解決輸入一個n輸出以n為長度的二進位制數串的所有可能並從小到大輸出所有

一開始看到這個問題時,會想到用0和1的排序,去尋找其中的規律,總結出表示式。 看似可行,但是在尋找規律時會發現每種情況之間都有一定的規律但不好用表示式表示出來,如: n=3; 輸出結果為: 000;. 001;. 010;. 011;. 100;. 101;.

輸入一個數字輸出它的階乘結果。

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> //輸入一個數字,顯示出它的階乘 v

輸入一個int型整數將其逆序輸出每個數字後有一個空格。 將n按其逆序輸出每個數字後有一個空格輸出佔一行。例如輸入12354輸出4 5 3 2 1

#include<stdio.h>#include<math.h> int main(){ int n,a; scanf("%d",&n); while(1) { if(n>=10)  {  a=n%10;  n=n/10;  print

80x86組合語言在螢幕上模擬輸入密碼的過程

用 1 號功能呼叫,可以輸入一個字元,並且當場顯示。這種方法不適於輸入密碼。用 7 號功能呼叫,可以輸入一個字元,當場並不顯示。這就可以輸入密碼了。密碼輸入後,可以在螢幕上顯示出其它的字元,比如《*》

java——從鍵盤上輸入一個年份輸入一個月份數字輸出月份有多少天

/* (程式頭部註釋開始) </p><p>* 程式的版權和版本宣告部分 * Copyright (c) 2011, 煙臺大學計算機學院學生 * 作 者: 李兆慶

2.7 輸入一個ASCII碼輸出對應的字元。

試題描述輸入一個ASCII碼,輸出對應的字元。輸入格式一個整數,即字元的ASCII碼,保證存在對應的可見字元。輸出格式一行,包含相應的字元。樣例輸入65樣例輸出A#include<stdio.h&