汇编基础——简单编程(求Tomy成绩和指定算式的值)

1. 有下面的一组学生成绩数据,编程序求出Tomy同学的总分,最后结果存放在AX中

nam

'Tomy'

'John'

'Mary'

'Jone'

c

78

82

75

92

asm

66

79

95

87

math

78

93

74

100

chinese

90

78

56

63

提示:Tomy同学的总分是138H。

代码

assume cs:code,ds:data
data segment;数据段的开始

    nam db 'Tomy','John','Mary','Jone' ;十六个字节用来存储姓名

    c dw 78, 82, 75, 92;用八个字节来存储C成绩

    asm dw 66, 79, 95, 87;八个字节来存储asm成绩

    math dw 78, 93, 74, 100;八个字节来存储math成绩

    chinese dw 90, 78, 56, 63;八个字节来存储Chinese成绩

data ends;数据段的结束


code segment;代码段的开始
start:
      mov ax,data;把数据段开始的段地址存入AX
      mov ds,ax;把AX中的数据存入DS
      mov bx,16;把16存入BX中,即作为成绩开始的偏移地址
      mov ax,0;把AX置为零
      mov cx,4;循环次数为四次


  s:  add ax,[bx];把DS:[BX]处的数值与AX中的数值相加存入AX
      add bx,8;BX中的数据与8相加并存入BX
      loop s ;循环从s开始

      mov ax,4c00h
      int 21h;程序返回

code ends;代码段结束
end start;程序结束

 

2.计算,其中两组数据中的所有数均为80以内的正数。要求在程序中必要处要写上注释。

代码:

assume cs:code,ds:data1
data1 segment ;数据段data1存放X
  db 12,16,18,12,4,7,8,16  
data1 ends ;data1结束

data2 segment ;数据段data2存放Y
  db 3,11,7,9,15,17,7,1    
data2 ends ;data2结束

code segment;代码段的开始
     dw 0 ;此处存放求和结果

start:  ;代码开始
      mov ax,data1;把data1开始的段地址存放在AX
      mov ds,ax;把AX中的数据存入段寄存器DS
      mov ax,data2;把data2开始的段地址存放在AX
      mov es,ax;把AX中的数据存入段寄存器ES
      mov ax,0;把0存入AX
      mov bx,0;把0存入BX
      mov cx,8;把8存入CX

  s:  mov dx,0;把0存入DX
      mov dl,ds:[bx];把ds:[bx]处的字节型数据存入DL
      add dx,dx;DX中的数与DX相加存入DX
      add ax,dx;DX中的数与AX相加存入AX
      mov dl,es:[bx];把es:[bx]处的字节型数据存入DL
      add ax,dx;DX中的数与AX相加存入AX
      inc bx;BX中的数据加1存入BX
      loop s;循环从s开始

      mov cs:[0],ax;把AX中的数据存到CS:[0]处
      mov ax,4c00h
      int 21h;程序返回

code ends;代码段结束
end start;程序结束

 

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值