zoukankan      html  css  js  c++  java
  • 寒假汇编语言作业(1-3)

    程序设计项目一

    data segment

         dw ?

    data ends

    end

    要求:

    只在定义的数据段'?'中加入相关的内容,使得上面的程序可以在屏幕中间显示一个绿色的字符'A'。

     

    分析:

    中间位置:160*12+80=2000=7d0h  'A' =41h,绿字=02h

    可以写个可以显示的,然后再DEBUG打开找到程序在内存是如何保存的,再找16进制填进去,注意高地位

    参考代码:

     1 ;assume cs:data
     2 
     3 data segment
     4         dw  00b8h,8eb8h,0bbc0h,07d0h,41b8h,0b900h,0002h,8926h
     5         dw  2607h,4f89h,0b801h,4c00h,21cdh
     6 
     7 ;       mov ax,0b800h
     8 ;       mov es,ax
     9 ;       mov bx,7d0h
    10 ;       mov ax,41h
    11 ;       mov cx,02h
    12 ;       mov es:[bx],ax
    13 ;       mov es:[bx+1],cx
    14 ;       mov ax,4c00h
    15 ;       int 21h
    16 
    17 data ends
    18 end
    hj1.asm

    程序设计项目二

    对加密的字符串进行解密。

     

    要求:

    (1)加密的字符串放在Cryptography段。

    (2)解密方法:将Cryptography段的每个字符的ASCII值减去1。

    (3)用汇编语言实现程序,将Cryptography段的数据按照解密方法进行解密,将解密后的数据放在PlainText段,然后再把解密之后的字符串以白底蓝字方式显示到屏幕中间。

    (4)密文和明文的数据段定义如下:

    Cryptography segment

            db 'tqsfbe!zpvs!xjoht'

            db '!!cf!zpvs!nbtufs!'

    Cryptography ends

     

    PlainText segment

            db 2*17 dup (' ')

    PlainText ends

     

    分析:

    白底蓝字 = 71h

    参考代码:

     1 assume cs:code
     2 
     3 Cryptography segment
     4         db 'tqsfbe!zpvs!xjoht'
     5         db '!!cf!zpvs!nbtufs!'
     6 Cryptography ends
     7 
     8 PlainText segment
     9         db 2*17 dup (' ')
    10 PlainText ends
    11 
    12 code segment
    13 start:
    14         mov ax,Cryptography
    15         mov ds,ax
    16         mov ax,0b800h
    17         mov es,ax
    18         mov si,0
    19         mov di,7a8h     ; 160*12+40=1960=7a8h
    20         mov ah,71h    
    21         mov cx,34
    22      s:
    23         mov al,ds:[si]
    24         dec al
    25         mov ds:[si+48],al
    26         mov es:[di],ax
    27         add di,2
    28         inc si
    29         loop s
    30 
    31         mov ax,4c00h
    32         int 21h
    33 
    34 code ends
    35 end start
    hj2.asm

    程序设计项目三

       

    加、减、除三则运算。

     

    要求:

    (1)读取字符串的内容,判断第四个字符是'+'、'-'或'/',然后按照相应的符号进行运算,并把运算结果转换为字符串存放在等号后面,最后把算式显示到屏幕中间,白底蓝字。

    (2)注意数字字符的ASCII与数字的对应关系,数字的数值加30H为这个数字的字符所对应的ASCII。

    (3)数据段定义如下:

    Calculate segment

            db '1. 3/1=         '

            db '2. 5+3=         '

            db '3. 9-3=         '

            db '4. 4+5=         '

    Calculate ends

     参考代码:

     1 assume cs:code
     2 
     3 Calculate segment
     4         db '1. 3/1=         '
     5         db '2. 5+3=         '
     6         db '3. 9-3=         '
     7         db '4. 4+5=         '
     8 Calculate ends
     9 
    10 code segment
    11 start:
    12         mov ax,Calculate
    13         mov ds,ax
    14         mov si,0
    15         mov cx,4
    16      s:
    17         push cx
    18         mov ah,0
    19         mov al,ds:[si+3]
    20         sub al,30h
    21         mov dl,ds:[si+4]
    22         mov dh,ds:[si+5]
    23         sub dh,30h
    24         call check_symbol
    25         add al,30h
    26         mov ds:[si+8],al
    27         add si,10h
    28         pop cx
    29         loop s
    30    ;输出
    31         mov ax,0b800h
    32         mov es,ax
    33         mov di,722h
    34         mov ah,71h
    35         mov si,0
    36         mov cx,4
    37       s0:
    38         push cx
    39         push di
    40         mov cx,10h
    41       s1:
    42         mov al,ds:[si]
    43         mov es:[di],ax
    44         inc si
    45         add di,2
    46         loop s1
    47         pop di
    48         pop cx
    49         add di,0a0h
    50         loop s0
    51 
    52     mov ax,4c00h
    53     int 21h
    54 
    55      check_symbol:
    56    ;用标识符实现
    57         mov cl,'+'
    58         cmp dl,cl
    59         je add_
    60         mov cl,'-'
    61         cmp dl,cl
    62         je add_
    63         mov cl,'/'
    64         cmp dl,cl
    65         je div_
    66     ;用jcxz实现
    67 ;        mov ch,0
    68 ;        mov cl,dl
    69 ;        sub cx,'+'
    70 ;        jcxz add_
    71 ;        mov cl,dl
    72 ;        sub cx,'-'
    73 ;        jcxz sub_
    74 ;        mov cl,dl
    75 ;        sub cx,'/'
    76 ;        jcxz div_
    77 
    78      add_:
    79         add al,dh
    80         ret
    81 
    82      sub_:
    83         sub al,dh
    84         ret
    85 
    86      div_:
    87         div dh
    88         ret
    89 
    90 code ends
    91 end start
    hj3.asm

     

     

  • 相关阅读:
    《JSP2.0 技术手册》读书笔记六JSP语法与EL
    《Spring 2.0技术手册》读书笔记一Spring与eclipse的结合
    二元查找树转为双向链表
    《Jsp2.0技术手册》读书笔记补充web.xml详解及listener,filter,servlet加载顺序
    《JSP2.0技术手册》读书笔记三Filter
    《Spring2.0技术手册》读书笔记二理念
    Swift构造器链
    Swift函数_外部参数名,
    Swift数据类型_整型和浮点型
    Swift函数_默认参数
  • 原文地址:https://www.cnblogs.com/regconfi/p/4234655.html
Copyright © 2011-2022 走看看