王爽老师寒假汇编语言作业全解全析共同交流

寒假程序设计项目

2月10日更新第11题

2月6日更新第13题,包括设计流程图

请大家一定要自行思考解决后再参考(暂时只做到了第10个)

相应文件下载:

1.字模提取软件 http://pan.baidu.com/s/1kT5F3mf

2.程序demo图片 http://pan.baidu.com/s/1pJlUGUB


版权信息:

题目版权信息:面向河北农业大学学生的计算机科学与技术学习活动

解题代码 , 过程分析版权信息 : CSDN:msdys  百度:水℃幸福


程序设计项目一

data segment

     dw ?

data ends

end

要求:

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

 

参考代码

指令和数据没有本质上的区别  认真理解这句话

分析:中间位置160*13+80=2160   A=41h  绿=02h
直接做不出,先写个可以显示的,再找16进制填进去
浅析:先不用data段,写出一个简单的程序,即写出注释符号所在的程序.

运行程序,查看cs:0中的数据,然后将数据填入data段,注意高地位


;assume cs:data
data segment
	dw 00b8h,8eb8h,0bbc0h,0870h,41b8h,0b900h,0002h,8926h
	dw 2607h,4f89h,0b801h,4c00h,21cdh
;	mov ax,0b800h
;	mov es,ax
;	mov bx,2160
;	mov ax,41h
;	mov cx,02h
;	mov es:[bx],ax
;	mov es:[bx+1],cx
;mov ax,4c00h
;int 21h
data ends
end

   

程序设计项目二

 

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

 

要求:

(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

参考代码

assume cs:code,ds:Cryptography	;ds数据段,名字可以随便,但是段名必须是已有的


Cryptography segment
        db 'tqsfbe!zpvs!xjoht'
        db '!!cf!zpvs!nbtufs!'
Cryptography ends


PlainText segment
        db 2*17 dup (' ')	;+3*16=48
PlainText ends


code segment
start:	mov ax,Cryptography	;最后一次错在了这,必须加上这两句,要不然ds无数据
	mov ds,ax
	;解密
	mov ax,0b800h
	mov es,ax
	mov ah,71h
	mov si,2126		;中间是160*13+80-34=2126 左偏移34位开始
	mov bx,0
	mov cx,34
     s:
	mov al,ds:[bx]
	dec al			;-1上次错在使用了ax
	mov ds:[bx+48],al	;存入PlainText
	mov es:[si],ax		;结合ah al 显示
	add si,2
	inc bx
	loop s


mov ax,4c00h
int 21h


code ends
end start

   

程序设计项目三

   

加、减、除三则运算。

 

要求:

(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.and or p138
;;;;知识     +   -   *   /   add     sub     mul     div
;;;;asc      2b  2d  2a  2f  101011  101101  101010  101111	
;;;;asc-30	  d   f   c   11	数字asc - 30就是真实数字
;div:除数为8位时,被除数为16位,默认放在ax寄存器中.商则放在al中,余数放在ah中

assume cs:code,ds:Calculate

Calculate segment
        db '1. 3/1=         '		;运算符号是第5个字符
        db 
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值